了解Python的虚拟环境

时间:2013-02-02 22:03:44

标签: python unix virtualenv

我一直在阅读虚拟环境,它似乎是一个非常有用的工具,但现在我正在质疑我到目前为止如何设置我的整个python环境。现在,我安装的所有模块和软件包都驻留在这个目录中:

/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages

但是virtualenv文档似乎表明这种通用系统安装是一件坏事。如果是这种情况,那么我应该如何处理我当前的模块以及如何安装未来的模块?例如,我最近使用以下命令从我的用户目录安装了flask:

pip install flask

它现在位于网站包中。我应该做些不同的事吗?我在使用文档时遇到了问题,这似乎表明我需要进入项目目录,设置虚拟环境,并使用virtualenv安装我需要的所有模块。是这样的吗?有什么方法可以减少麻烦吗?似乎为每个项目目录安装可能的数十个软件包会有点多。

或者我只需要为使用旧版本模块的项目创建虚拟环境,而不是我在系统目录中安装的模块?然而,如果是这种情况,那么怎么了virtualenv口头禅似乎阻止所有系统安装呢?

2 个答案:

答案 0 :(得分:14)

如果你已经安装了这样的virtualenv:

pip install virtualenv

然后,您需要设置一个特定的virtualenv文件夹:

virtualenv [your project folder name]

这将创建包含几个重要子目录的项目文件夹。

在安装任何新东西之前,您将首先激活您的virtualenv,只有当'sourced'进入您的virtualenv时,新安装的模块才可用。从您的项目文件夹类型:

source bin/activate

然后,您将在每个终端行的括号中看到您的virtualenv名称。这表明你是'来源'。现在用pip或easy_install安装东西。

pip install flask

virtualenv基本上设置你的路径,在[venv文件夹] / bin中查找可执行文件,而不是/ usr / local / bin或其他。因此,您可以将文件直接复制到虚拟环境bin文件夹中。 (例如,MongoDB文件只是一个zip / tar文件,您可以将它们解压缩到您的venv bin文件夹中,当'sourced'进入时,您将可以访问该特定版本的MongoDB。)自己试试,运行此命令您的虚拟环境以及默认环境,以查看其变化情况。

echo $PATH && echo $PYTHONPATH

退出你的virtualenv:

deactivate

键入此内容会使您返回默认环境。

如果你还没有读过这篇文章,这是一个非常好的资源。

https://python-guide.readthedocs.org/en/latest/dev/virtualenvs/

答案 1 :(得分:0)

在您投入/支持任何生产之前,virtualenv的收益微乎其微。这只是激活virtualenv的一个额外步骤,当然你必须在每个虚拟环境中安装你的标准环境......不是真的那么多额外的努力...

然而,当你把某些东西投入生产时,当事情在夜晚发生碰撞时,这可能是一个巨大的胜利: - )