1 前言
由于Python的版本众多,还有Python2和Python3的争论,因此有些软件包或第三方库就容易出现版本不兼容的问题。

通过 virtualenv这个工具,就可以构建一系列 虚拟的python环境 ,然后在每个环境中安装需要的软件包(配合 pip 使用),这一系列的环境是相互隔离的。作为一个独立的环境就不容易出现版本问题,还方便部署。

2 安装
pip install virtualenv

3 virtualenv的基本使用
3.1 创建虚拟环境
virtualenv venv
为环境指定Python解释器:
virtualenv -p c:\python27\python.exe venv
3.2 激活虚拟环境
activate venv
3.3 停止虚拟环境
deactivate
3.4 删除虚拟环境
直接删除目录即可.
rmvirtualenv venv 

4 virtualenvwrapper
为了使用virtualenv更方便,可以借助 virtualenvwrapper
4.1 安装virtualenvwrapper
pip install virtualenvwrapper-win
4.2 创建虚拟环境
默认创建的虚拟环境位于C:\Users\username\envs,可以通过环境变量 WORKON_HOME来定制。

通过计算机-->属性-->高级系统设置-->环境变量-->在系统变量中新建“变量名”:WORKON_HOME,变量值:“你自定义的路径”。

执行此命令创建第一个虚拟环境:
mkvirtualenv venv
创建后,会自动激活环境,注意看Shell提示符的改变:
(venv)c:>
4.3列出所有虚拟环境
lsvirtualenv
4.4 激活虚拟环境
workon venv
4.5 进入虚拟环境目录
cdvirtualenv
4.6 进入虚拟环境的site-packages目录
cdsitepackages
4.7列出site-packages目录的所有软件包
lssitepackages
4.8 停止虚拟环境
deactivate
4.9 删除虚拟环境
rmvitualenv venv

5 重建Python环境
5.1 冻结环境
所谓 冻结(freeze)环境,就是将当前环境的软件包等固定下来:
pip freeze >packages.txt  # 安装包列表保存到文件packages.txt中 
5.2 重建环境
重建(rebuild)环境就是在部署的时候,在生产环境安装好对应版本的软件包,不要出现版本兼容等问题:
pip install -r packages.txt
配合pip,可以批量安装对应版本的软件包,快速重建环境,完成部署

在pycharm中使用配置好的virtualenv环境

打开setting添加本地python环境

python 虚拟环境 fatal error in launcher pip_虚拟环境

选择刚刚创建的虚拟环境

python 虚拟环境 fatal error in launcher pip_python_02

也可以使用 pycharm 自带功能建立虚拟环境

之后,将 requirements.txt 文件放到虚拟目录 venv 下,pycharm自动识别安装相应的 package。

其他有关 Python virtualenv 的手册
http://pythonguidecn.readthedocs.io/zh/latest/dev/virtualenvs.html

CentOS7下python虚拟环境

1.搭建python虚拟环境

我们先创建一个隐藏目录 .virtualenvs,所有的虚拟环境都放在此目录下 :mkdir /root/.virtualenvs

python 虚拟环境 fatal error in launcher pip_virtualenv_03

2.安装虚拟环境

确认pip:whereis pip3

python 虚拟环境 fatal error in launcher pip_虚拟环境_04

pip3 install virtualenv

python 虚拟环境 fatal error in launcher pip_python_05

安装virtualenvwrapper,为避免超时错误,设置一个超时时间:pip3 install virtualenvwrapper --default-timeout=1000

python 虚拟环境 fatal error in launcher pip_virtualenv_06

pip3 list

python 虚拟环境 fatal error in launcher pip_virtualenv_07

3.配置环境变量,增加最后两行

查找virtualenvwrapper所在的路径(记得加.sh要不然查到出来的路径不正确)

[root@localhost ~]# whereis virtualenvwrapper.sh

virtualenvwrapper: /usr/local/bin/virtualenvwrapper.sh

python 虚拟环境 fatal error in launcher pip_virtualenv_08

加到~/.bashrc 里面

vim ~/.bashrc

export WORKON_HOME=/root/.virtualenvs

source /usr/local/bin/virtualenvwrapper.sh

python 虚拟环境 fatal error in launcher pip_python_09

执行:source ~/.bashrc

[root@localhost /]# source ~/.bashrc

virtualenvwrapper.user_scripts creating /root/.virtualenvs/premkproject

virtualenvwrapper.user_scripts creating /root/.virtualenvs/postmkproject

virtualenvwrapper.user_scripts creating /root/.virtualenvs/initialize

virtualenvwrapper.user_scripts creating /root/.virtualenvs/premkvirtualenv

virtualenvwrapper.user_scripts creating /root/.virtualenvs/postmkvirtualenv

virtualenvwrapper.user_scripts creating /root/.virtualenvs/prermvirtualenv

virtualenvwrapper.user_scripts creating /root/.virtualenvs/postrmvirtualenv

virtualenvwrapper.user_scripts creating /root/.virtualenvs/predeactivate

virtualenvwrapper.user_scripts creating /root/.virtualenvs/postdeactivate

virtualenvwrapper.user_scripts creating /root/.virtualenvs/preactivate

virtualenvwrapper.user_scripts creating /root/.virtualenvs/postactivate

virtualenvwrapper.user_scripts creating /root/.virtualenvs/get_env_details

python 虚拟环境 fatal error in launcher pip_virtualenv_10

如果报错:

If Python could not import the module virtualenvwrapper.hook_loader,

check that virtualenvwrapper has been installed for

VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python3.7 and that PATH is

set properly.

解决:

[finance@finance-06 ~]$ whereis virtualenvwrapper.sh

virtualenvwrapper: /usr/local/python/python3/bin/virtualenvwrapper.sh

[finance@finance-06 ~]$ sudo vim /usr/local/python/python3/bin/virtualenvwrapper.sh

python 虚拟环境 fatal error in launcher pip_虚拟环境_11


python 虚拟环境 fatal error in launcher pip_虚拟环境_12

增加一行:

python 虚拟环境 fatal error in launcher pip_虚拟环境_13

修改后,再source ~/.bashrc

4.创建虚拟环境(需要等一会,且需要联网):mkvirtualenv -p python3 虚拟环境名称 或者virtualenv 虚拟环境名称

例 :mkvirtualenv -p python3 test 或者 virtualenv 虚拟环境名称

提示 :

1.创建虚拟环境需要联网

2.创建成功后, 会自动工作在这个虚拟环境上

3.工作在虚拟环境上, 提示符最前面会出现 “虚拟环境名称”

python 虚拟环境 fatal error in launcher pip_virtualenv_14

使用虚拟环境的命令:

退出虚拟环境: deactivate

python 虚拟环境 fatal error in launcher pip_python_15

选择虚拟环境: workon 两次tab键

python 虚拟环境 fatal error in launcher pip_virtualenv_16

删除虚拟环境:rmvirtualenv 虚拟环境名称

(如:删除虚拟环境test)

先退出:deactivate

再删除:rmvirtualenv test

python 虚拟环境 fatal error in launcher pip_virtualenv_17

在虚拟环境中安装工具包

工具包安装的位置:第一步创建的隐藏目录/+创建的环境名/+ lib/python3.7/site-packages

python 虚拟环境 fatal error in launcher pip_虚拟环境_18

安装工具包,先使用 workon 环境名 进入到虚拟环境:pip install 包名称

如: 安装requests:pip3 install requests --default-timeout=1000

python 虚拟环境 fatal error in launcher pip_virtualenv_19

查看虚拟环境中已经安装的包:pip list

python 虚拟环境 fatal error in launcher pip_虚拟环境_20

CentOS安装Python虚拟环境
yum install -y python-virtualenv
pip install virtualenvwrapper

寻找virtualenvwrapper.sh路径
/usr/local/sbin/python3/bin/virtualenvwrapper.sh

在root根目录下创建一个隐藏的文件夹
mkdir /root/.pythonVenv

编辑vi ~/.bashrc文件,根据文件实际位置添加:
export WORKON_HOME=/root/.pythonVenv
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
export VIRTUALENVWRAPPER_VIRTUALENV=/usr/local/bin/virtualenv
source /usr/local/bin/virtualenvwrapper.sh

备注:如果已添加python的软连接
ln -s /usr/local/python/bin/python3 /usr/bin/python
则:export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
可以不设置。
export VIRTUALENVWRAPPER_VIRTUALENV=/usr/local/bin/virtualenv
也可不设置

然后生成一个虚拟环境,venv为虚拟环境的名称

实践操作
pip install virtualenv
pip install virtualenvwrapper
pip install pipenv

ln -s /usr/local/python/bin/virtualenv /usr/bin/virtualenv
ln -s /usr/local/python/bin/pipenv /usr/bin/pipenv

whereis virtualenvwrapper.sh
/usr/local/python/bin/virtualenvwrapper.sh

如果找不到,则执行:
find / -name virtualenvwrapper.sh
查找到的目录地址为:
find / -name virtualenvwrapper.sh
/usr/local/python3/bin/virtualenvwrapper.sh

这是文件,cd 的话需要到达上一层目录,否则会报错!!!
我又重新查找文件路径:
find / -name virtualenvwrapper
/usr/local/python3/lib/python3.6/site-packages/virtualenvwrapper

cp /usr/local/python/bin/virtualenvwrapper.sh /usr/local/bin/virtualenvwrapper.sh

在root根目录下创建一个隐藏的文件夹
mkdir /root/.pythonVenv

编辑vi ~/.bashrc文件,根据文件实际位置添加:
export WORKON_HOME=/root/.pythonVenv
source /usr/local/bin/virtualenvwrapper.sh

执行:
source ~/.bashrc

创建虚拟环境
mkvirtualenv 虚拟环境名称