了解Python的虚拟环境

use*_*661 8 python unix virtualenv

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

/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages
Run Code Online (Sandbox Code Playgroud)

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

pip install flask
Run Code Online (Sandbox Code Playgroud)

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

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

Rob*_*ter 14

如果您已经安装了virtualenv,请执行以下操作:

pip install virtualenv
Run Code Online (Sandbox Code Playgroud)

然后,您将要设置特定的virtualenv文件夹:

virtualenv [your project folder name]
Run Code Online (Sandbox Code Playgroud)

这将创建具有一些重要子目录的项目文件夹.

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

source bin/activate
Run Code Online (Sandbox Code Playgroud)

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

pip install flask
Run Code Online (Sandbox Code Playgroud)

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

echo $PATH && echo $PYTHONPATH
Run Code Online (Sandbox Code Playgroud)

要退出你的virtualenv:

deactivate
Run Code Online (Sandbox Code Playgroud)

键入此内容将使您返回默认环境.

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

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