virtualenvwrapper中的环境和项目之间的关系是什么?

问题描述:

换句话说,mkvirtualenvmkproject命令有什么区别?virtualenvwrapper中的环境和项目之间的关系是什么?

我有一个工作流程是这样的:

/dev 
    projectA 
     appA 
     appB 
    projectB 
     appA 
     appB 

所有的应用程序共享一些资源(如南,PEP8等),但其他资源是具体到每一个应用程序。我应该使用virtualenvwrapper“项目”来保持这些依赖关系是分开的吗?

+0

什么是virtualenvwrapper项目? Virtualenwrapper制作,管理和删除virtualenvs。你可以使任何你喜欢的终端的virtualenv。 – hughdbrown

从我的documentation的理解,mkvirtualenv projectenv只需创建一个名为在$WORKON_HOMEprojectenv一个新的虚拟环境,同时mkproject projectenv创建一个名为projectenv新的虚拟环境,并命名为projectenv一个新的目录;创建后,projectenv目录自动成为您当前的工作目录。虚拟环境将存在于$WORKON_HOME中,并且开发目录存在于$PROJECT_HOME中。

请注意,要使mkproject正常工作,必须先将环境变量PROJECT_HOME设置为您希望创建项目的目录的名称。您可以在设置您的$WORKON_HOME变量的同一位置执行此操作,也可以在飞行中对其进行设置。

export PROJECT_HOME=$HOME/src/allprojects 
mkproject mynewproject 

mynewproject现在将是您当前的虚拟环境和新的mynewproject目录将在~/src/allprojects存在。

mkvirtualenv是virtualenvwrapper使得管理蟒蛇virtualenvs容易命令,而mkproject来自一个virtualenvwrapper插件来管理你的项目(这是直接集成到virtualenvwrapper)

插件页面提到了以下功能:

管理您的开发项目工作目录以及您的虚拟环境环境 。定义一个用于创建模板的API,以便快速创建新的环境。使用来自 virtualenvwrapper的workon命令在项目之间切换。用户可配置钩子 用于定制新项目。

您不必使用virtualenvwrapper插件创建或管理项目以使用virtualenv命令。它只是一个方便的插件,用于发布workon命令时交换到项目目录或从模板创建新项目等。

对于自己而言,virtualenv没有库共享功能,除非系统站点包使用正确的标志。我偶然发现了一个项目,这个项目给了你这个能力,但从来没有再次发现它。

编辑:virtualenvwrapper现在具有copy virtualenvs的功能,并将目录添加到您的virtualenv PATH中,以便share libraries