virtualenvwrapper中的环境和项目之间的关系是什么?
换句话说,mkvirtualenv
和mkproject
命令有什么区别?virtualenvwrapper中的环境和项目之间的关系是什么?
我有一个工作流程是这样的:
/dev
projectA
appA
appB
projectB
appA
appB
所有的应用程序共享一些资源(如南,PEP8等),但其他资源是具体到每一个应用程序。我应该使用virtualenvwrapper“项目”来保持这些依赖关系是分开的吗?
从我的documentation的理解,mkvirtualenv projectenv
只需创建一个名为在$WORKON_HOME
projectenv
一个新的虚拟环境,同时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。
什么是virtualenvwrapper项目? Virtualenwrapper制作,管理和删除virtualenvs。你可以使任何你喜欢的终端的virtualenv。 – hughdbrown