8

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

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

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

pip install flask

它现在驻留在站点包中。我应该做一些不同的事情吗?我的文档有问题,这似乎表明我需要进入项目目录,设置虚拟环境,并使用 virtualenv 安装我需要的所有模块。是这样吗?有什么办法可以让事情变得不那么麻烦吗?似乎为每个项目目录安装潜在的几十个包会有点多。

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

4

2 回答 2

14

如果您已经像这样安装了 virtualenv:

pip install virtualenv

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

virtualenv [your project folder name]

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

在安装任何新东西之前,您将首先激活您的 virtualenv,新安装的模块只有在“源”到您的 virtualenv 时才对您可用。从您的项目文件夹类型:

source bin/activate

然后,您将在每个终端行的括号中看到您的 virtualenv 名称。这表明您已被“采购”。现在使用 pip 或 easy_install 安装东西。

pip install flask

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

echo $PATH && echo $PYTHONPATH

要退出您的 virtualenv:

deactivate

键入此内容将使您回到默认环境。

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

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

于 2013-02-02T22:18:28.023 回答
0

在您将任何东西投入/支持生产之前,virtualenv 的好处是微乎其微的。这只是激活virtualenv的一个额外步骤,当然你必须在每个virtualenv中安装你的标准环境..并没有那么多额外的努力......

但是,当您将某些东西投入生产时,当事情在晚上发生颠簸时,这可能是一个巨大的胜利:-)

于 2013-02-02T22:53:37.453 回答