Python创建和使用虚拟环境
示例
virtualenv是构建隔离的Python环境的工具。该程序创建一个文件夹,其中包含使用Python项目所需的所有必需可执行文件。
安装virtualenv工具
只需要一次。该virtualenv程序可能会通过您的发行版提供。在类似Debian的发行版中,该软件包称为python-virtualenv或python3-virtualenv。
您也可以virtualenv使用pip安装:
$ pip install virtualenv
创建一个新的虚拟环境
每个项目只需要一次。启动要隔离依赖项的项目时,可以为此项目设置新的虚拟环境:
$ virtualenv foo
这将创建一个foo包含工具脚本和python二进制文件本身副本的文件夹。文件夹的名称无关。创建虚拟环境后,它便是自包含的,不需要使用该virtualenv工具进行进一步操作。您现在可以开始使用虚拟环境。
激活现有的虚拟环境
要激活虚拟环境,需要一些外壳魔术,因此您的Python是内部的,foo而不是系统的。这是activate文件的目的,必须将其来源到当前的shell中:
$ source foo/bin/activate
Windows用户应输入:
$ foo\Scripts\activate.bat
激活虚拟环境后,python和pip二进制文件以及由第三方模块安装的所有脚本就是其中的脚本foo。特别是,与之一起安装的所有模块pip都将部署到虚拟环境中,从而允许一个封闭的开发环境。激活虚拟环境还应在提示符后添加前缀,如以下命令所示。
#仅将“请求”安装到foo,而不是全局 (foo)$ pip install requests
保存和还原依赖关系
要保存通过安装的模块,pip可以使用以下freeze命令将所有这些模块(以及相应的版本)列出到文本文件中。这使其他人可以使用install命令快速安装应用程序所需的Python模块。该文件的常规名称是requirements.txt:
(foo)$ pip freeze > requirements.txt (foo)$ pip install -r requirements.txt
请注意,freeze列出了所有模块,包括手动安装的顶级模块所需的传递依赖项。因此,您可能更喜欢requirements.txt通过仅放置所需的顶级模块来手工制作文件。
退出虚拟环境
如果您已在虚拟环境中完成工作,则可以将其停用以返回到常规外壳程序:
(foo)$ deactivate
在共享主机中使用虚拟环境
有时无法$sourcebin/activate使用virtualenv,例如,如果您在共享主机中使用mod_wsgi,或者您无权访问文件系统(例如在AmazonAPIGateway或GoogleAppEngine中)。在这种情况下,您可以部署在本地virtualenv中安装的库并修补您的sys.path。
幸运的virtualenv附带了一个脚本,可以同时更新您sys.path和您的sys.prefix
import os mydir = os.path.dirname(os.path.realpath(__file__)) activate_this = mydir + '/bin/activate_this.py' execfile(activate_this, dict(__file__=activate_this))
您应该在服务器将要执行的文件的开头添加这些行。
这将找到bin/activate_this.py的是virtualenv在同一目录正在执行创建的文件并添加lib/python2.7/site-packages到sys.path
如果要使用该activate_this.py脚本,请记住至少使用bin和lib/python2.7/site-packages目录及其内容进行部署。
内置虚拟环境
从Python3.3开始,venv模块将创建虚拟环境。该pyvenv命令不需要单独安装:
$ pyvenv foo $ source foo/bin/activate
要么
$ python3 -m venv foo $ source foo/bin/activate