换句话说,mkvirtualenv
和mkproject
命令之间有什么区别?
我的工作流程如下:
/dev
projectA
appA
appB
projectB
appA
appB
所有应用程序共享一些资源(如South,pep8等),但其他资源特定于每个应用程序。我应该使用virtualenvwrapper“项目”来保持这些依赖关系分开吗?
答案 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。