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环境
选择刚刚创建的虚拟环境
也可以使用 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
2.安装虚拟环境
确认pip:whereis pip3
pip3 install virtualenv
安装virtualenvwrapper,为避免超时错误,设置一个超时时间:pip3 install virtualenvwrapper --default-timeout=1000
pip3 list
3.配置环境变量,增加最后两行
查找virtualenvwrapper所在的路径(记得加.sh要不然查到出来的路径不正确)
[root@localhost ~]# whereis virtualenvwrapper.sh
virtualenvwrapper: /usr/local/bin/virtualenvwrapper.sh
加到~/.bashrc 里面
vim ~/.bashrc
export WORKON_HOME=/root/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh
执行: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
如果报错:
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
增加一行:
修改后,再source ~/.bashrc
4.创建虚拟环境(需要等一会,且需要联网):mkvirtualenv -p python3 虚拟环境名称 或者virtualenv 虚拟环境名称
例 :mkvirtualenv -p python3 test 或者 virtualenv 虚拟环境名称
提示 :
1.创建虚拟环境需要联网
2.创建成功后, 会自动工作在这个虚拟环境上
3.工作在虚拟环境上, 提示符最前面会出现 “虚拟环境名称”
使用虚拟环境的命令:
退出虚拟环境: deactivate
选择虚拟环境: workon 两次tab键
删除虚拟环境:rmvirtualenv 虚拟环境名称
(如:删除虚拟环境test)
先退出:deactivate
再删除:rmvirtualenv test
在虚拟环境中安装工具包
工具包安装的位置:第一步创建的隐藏目录/+创建的环境名/+ lib/python3.7/site-packages
安装工具包,先使用 workon 环境名 进入到虚拟环境:pip install 包名称
如: 安装requests:pip3 install requests --default-timeout=1000
查看虚拟环境中已经安装的包:pip list
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 虚拟环境名称