实际使用中,一台主机上经常会部署多个python脚本,而不同的脚本可能依赖的python版本都不尽相同。
例如以下场景:
脚本aaa.py需要使用python2.7版本,脚本bbb.py需要使用python3.7版本
这时如若将2.7和3.7全部安装,则脚本执行可能会有影响。
最好的方法是:针对每一个项目,都建立其专属的虚拟环境
实现venv虚拟环境主要是用virtualenv,
此外还有python3.4以后自带的venv模块,以及多环境的管理工具virtualenvwrapper
内容大纲
1 virtualenv
安装 virtualenv
# 指定镜像源
pip3 install virtualenv -i https://pypi.tuna.tsinghua.edu.cn/simple/
# 也可以先永久指定pip源,再安装所需模块
pip3 config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple/
# 查看当前pip镜像源
pip3 config list
pip3 install virtualenv
创建
# 创建虚拟环境caojie1
virtualenv caojie1
#创建纯净的虚拟环境caojie1
virtualenv caojie1 --no-site-packages
#virtualenv 版本20以后的,默认就是纯净,不必再加 --no-site-packages
#virtualenv --version 可查看当前版本
进入
# 进入并使用虚拟环境
source caojie1/bin/activate
退出
# 退出当前虚拟环境
deactivate
2 使用python的venv模块直接生成
python3.4 以上版本,可以直接用venv模块创建一个虚拟环境,不用自己去使用pip安装virtualenv
新建一个名为caojie2的虚拟环境
python3 -m venv caojie2
其他操作的命令与上述的virtualenv一致
3 使用virtualenvwrapper集中管理
上述2种方法生成的venv都在当前目录下,若有时候需要在好几个环境中频繁切换时就很麻烦。需要不停的进入不同目录执行source命令,另外也不方便统计当前机器上总共有多少个虚拟环境
为了解决上述问题,virtualenvwrapper应运而生,
使用此工具可以更方便的管理虚拟环境,包括创建、切换、删除等操作都可以很快速的执行
安装
linux 中名为virtualenvwrapper,windows中为 virtualenvwrapper-win
pip3 install virtualenvwrapper
# 环境变量配置
cat >> ~/.bash_profile << 'EOF'
# virtualenvwrapper
if [ -f /usr/local/bin/virtualenvwrapper.sh ]; then
export WORKON_HOME=$HOME/.virtualenvs
VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
source /usr/local/bin/virtualenvwrapper.sh
fi
EOF
source ~/.bash_profile
创建新的虚拟环境
mkvirtualenv -p python3 caojie1
mkvirtualenv -p python3 caojie2
mkvirtualenv -p python3 caojie3
mkvirtualenv -p python3 caojie4
查看当前所有的虚拟环境
workon
进入(切换)
workon caojie3
离开
deactivate
删除
rmvirtualenv caojie{1,2,3,4}
4 crontab 使用venv运行脚本
# 00 10 * * * source /data/py3_venv_aaa/bin/activate && python aaa.py ; deactivate