virtualenv使用

virtualenv说白了就是把python相关依赖环境打包放到项目环境下,通过virtualenv进入激活状态,我可以在系统中安装2.7、3.4、3.5版本的python,然后通过virtualenv,指定不同项目使用不同的python版本。

centos7 默认没有pip命令,需要安装,当然,也可以直接从源码安装virtualenv,但是为了保障后期virtualenv的更新,统一通过pip来安装

yum install epel-release
yum install python-pip
pip install virtualenv

安装完成后输入virtualenv –version可以查看到版本信息

[root@test ~]# virtualenv --version
15.0.3

升级virtualenv

pip install --upgrade virtualenv

用户手册:https://virtualenv.pypa.io/en/stable/userguide/

使用(Usage)

$virtualenv /path/to/ENV

ENV是一个放置新虚拟环境的目录,包含一些有用的信息(可以放置到项目父目录):

  • ENV/lib和ENV/include被创建,包含虚拟环境需要的库文件。包安装在ENV/lib/pythonX.X/site-packages/目录下
  • ENV/bin 可执行文件位置。通过在脚本文件定义#!/path/to/ENV/bin/python方式执行指定python
  • pip和setuptools被安装。可以方便安装库。可以在ENV/bin/pip执行关联的pip。

启用脚本(activate script)

在一个新创建的virtualenv环境,会存在一个activate的shell脚本。脚本包含在/path/to/ENV/bin/目录下
可以通过如下命令执行

source bin/activate

NOTICE:bin/activate脚本只能在bash/zsh/dash下执行
执行此命令,将会修改$PATH环境变量,使其对应的第一个入口为bin/目录。如果直接通过虚拟环境的bin/目录执行脚本(path/to/ENV/bin/pip或者/path/to/ENV/bin/python-script.py),则不需要执行此命令。
activate脚本同时会修改shell提示符,用来表示当前虚拟环境下。
如果要退出activate模式,则运行

$deactivate

移除一个环境(Removing an Environment)

移除一个虚拟环境只需要执行deactivate命令,然后删除环境目录就可以了

(ENV)$ deactivate
$ rm -r /path/to/ENV

–system-site-package选项

如果使用virtualenv –system-site-packages ENV构建虚拟环境,则会从系统的python的site-packages目录继承包

使用自定义python虚拟环境

使用自定义的python替代系统默认python

export VIRTUALENV_PYTHON=/opt/python-3.3/bin/python
virtualenv ENV

等价于

virtualenv --python=/opt/python-3.3/bin/python /path/to/ENV

执行完成后执行source bin/activate查看相关环境信息

pi@raspberrypi:~/autotask/ENV $ source bin/activate
(ENV) pi@raspberrypi:~/autotask/ENV $ pip install bs4
(ENV) pi@raspberrypi:~/autotask $ /usr/bin/env python3 --version
Python 3.5.2

最后:使用其他版本的python还是需要预先编译安装对应版本的python环境,然后通过virtualenv来分隔各项目对应的python环境。

发表评论

电子邮件地址不会被公开。 必填项已用*标注