Python虚拟环境:Virtualenv安装及配置 | 技术一流

首页 » Linux » 正文

Python虚拟环境:Virtualenv安装及配置

 

需求
一个 python 版本同时跑多个应用时,所有第三方的包都会被 pip 安装到 site-packages 目录下, 那些应用程序就会共用一个 Python . 这种情况下,每个应用可能需要各自拥有一套 “独立” 的Python运行环境, virtualenv就是用来为一个应用创建一套 “隔离” 的Python运行环境, 使你的全局 site-packages 目录保持干净和可管理

安装
网速较好可以通过 pip 来安装, 系统没有 pip 的请参考 pip2  或 pip3 (通过 yum 来安装的版本可能会较低)

pip install virtualenv
pip install setuptools  # 如果提示安装就执行这个

或者先到下面链接里找到.whl 包, 下载好再安装

pip install wheel
pip install 包名.whl
# http://www.lfd.uci.edu/~gohlke/pythonlibs/
# https://pypi.python.org/pypi

使用

[root@localhost home]# virtualenv MTP            # 创建名为MTP的虚拟环境
New python executable in /home/MTP/bin/python
Installing setuptools, pip, wheel...done.
[root@localhost home]# ls                               #  会在当前目录生成一个目录
MTP
[root@localhost home]# cd MTP/
[root@localhost MTP]# ls
bin  include  lib  lib64  pip-selfcheck.json
[root@localhost MTP]# source ./bin/activate       #  启动虚拟环境后, 此时命令行会多一个(MTP)
(MTP) [root@localhost MTP]# pip freeze    # MTP为虚拟环境名称, 接下来所有模块都只会安装到该目录
(MTP) [root@localhost MTP]# pip list
pip (9.0.0)
setuptools (28.7.1)
wheel (0.30.0a0)
(MTP) [root@localhost MTP]# deactivate      #  退出虚拟环境, 将回到系统默认的Python解释器环境
[root@localhost MTP]#

删除
删除一个虚拟环境, 只需要删除它的目录.  有必要请执行( rm -rf venv )

其他注意
运行pip带 –no-site-packages 选项的 virtualenv 将不会包括全局安装的包. 这可用于保持包列表干净, 以防以后需要访问它. (这在 virtualenv 1.7及之后是默认行为)

为了保持你的环境的一致性, “冻结(freeze)” 环境包当前的状态, 生成的requirements.txt文件就包含了当前环境中所有包及各自的版本的简单列表

[root@localhost home]# pip freeze
virtualenv==15.0.3
chardet==2.2.1
configobj==4.7.2
decorator==3.4.0
pygobject==3.14.0
[root@localhost home]# pip freeze > requirements.txt

你可以使用  “pip list” 在不产生requirements文件的情况下, 查看已安装包的列表. 这会方便以后别的开发者(或者你需要重新创建这样的环境) 很容易安装相同版本的包

(MTP) [root@localhost home]# pip install -r requirements.txt# 为了演示,在虚拟环境装个PyMySQL包
Collecting PyMySQL==0.7.9 (from -r requirements.txt (line 1))
Using cached PyMySQL-0.7.9-py2-none-any.whl
Installing collected packages: PyMySQL
Successfully installed PyMySQL-0.7.9
(MTP) [root@localhost MTP]#
这能帮助确保安装、部署和开发者之间的一致性.

Virtualenvwrapper
Virtaulenvwrapper是virtualenv的扩展包,它提供了一系列命令用于更方便管理虚拟环境,它可以做:
1. 将所有虚拟环境整合在一个目录下
2. 管理(新增,删除,复制)虚拟环境
3. 切换虚拟环境 …

安装

[root@localhost MTP]# pip install virtualenvwrapper
[root@localhost MTP]# echo "export WORKON_HOME=$HOME/.virtualenvs" >> ~/.bashrc
[root@localhost MTP]# source  ~/.bashrc
[root@localhost MTP]# source $(find /usr -type f -name virtualenvwrapper.sh)

此时virtualenvwrapper就可以使用了; 对于Windows, 可以使用 virtualenvwrapper-win

查看

lsvirtual

创建

mkvirtual [环境名称]

启动/切换

workon [环境名称]

删除

rmvirtualenv [环境名称]

离开

deactivate

virtualenvwrapper 提供环境名字的tab补全功能. 当你有很多环境, 且很难记住它们的名字时, 这很有用

其他有用的命令
cdvirtualenv
导航到当前激活的虚拟环境的目录中
cdsitepackages
和上面的类似, 但是是直接进入到 site-packages 目录中
lssitepackages
显示 site-packages 目录中的内容

发表评论