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

时间:2011-11-27 19:21:09

标签: python virtualenv pip virtualenvwrapper

换句话说,mkvirtualenvmkproject命令之间有什么区别?

我的工作流程如下:

/dev
    projectA
        appA
        appB
    projectB
        appA
        appB

所有应用程序共享一些资源(如South,pep8等),但其他资源特定于每个应用程序。我应该使用virtualenvwrapper“项目”来保持这些依赖关系分开吗?

2 个答案:

答案 0 :(得分:18)

根据我对documentation的理解,mkvirtualenv projectenv只是在projectenv中创建了一个名为$WORKON_HOME的新虚拟环境,而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中将存在新的{{1}}目录。

答案 1 :(得分:3)

mkvirtualenv是来自virtualenvwrapper的命令,它使得管理python virtualenv更容易,而mkproject来自virtualenvwrapper插件来管理你的项目(直接集成到virtualenvwrapper)

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

  

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

您无需使用virtualenvwrapper插件创建或管理项目即可使用virtualenv命令。它只是一个方便的插件,用于在发出workon命令时交换到项目目录,或者从模板创建新项目。

virtualenv本身没有库共享功能,除非使用系统site-packages,否则使用正确的标志。我偶然发现了一个项目,它给了你这种能力,但从未再找到它。

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