“人心生一念,天地悉皆知,善恶若无报,乾坤必有私。”
——吴承恩《西游记》
在Python开发中,我们可能会遇到一种情况,就是当前的项目依赖的是某一个版本,但是另一个项目依赖的是另一个版本,这样就会造成依赖冲突。virtualenv应运而生,通过创建一个虚拟化的python运行环境,将所需的依赖分别安装进去的,不同项目之间相互不干扰。
Virtualenv——建立一个虚拟的python环境,一个专属于项目的python环境。
一、基本使用
[注]如果使用 Python 3.4及以上版本,可以使用标准库内置的 venv 模块替代 virtualenv,两者的使用方式基本相同,唯一不同的是创建虚拟环境的方式。
通过pip安装virtualenv:
pip install virtualenv
[注]如果安装包的时候速度太慢,可以考虑设置 PyPI 国内镜像。
国内有多个知名镜像站,如清华、中科大。
以清华为例:
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
清华Tuna镜像站官方pypi帮助文档:
https://mirrors.tuna.tsinghua.edu.cn/help/pypi/
测试安装:
virtualenv --version
为一个工程项目搭建一个虚拟环境:
cd my_projectvirtualenv my_project_env
另外,如果存在多个python解释器,可以选择指定一个Python解释器(比如python2.7),没有指定则由系统默认的解释器来搭建:
virtualenv -p /usr/bin/python2.7 my_project_env
这将会在当前的目录中创建一个名为my_project_env的文件夹,这是一个独立的python运行环境,包含了Python可执行文件, 以及 pip 库的一份拷贝,这样就能安装其他包了,不过已经安装到系统Python环境中的所有第三方包都不会复制过来,这样,我们就得到了一个不带任何第三方包的“干净”的Python运行环境来。
要开始使用虚拟环境,需要激活脚本将其激活:
Windows(CMD.exe)使用下面的命令:
.\my_project_env\scripts\activate
my_project_env替换为自己的虚拟环境名称。
Linux 和 macOS(bash/zsh)使用下面的命令:
source ./my_project_env/bin/activate
退出虚拟环境:
deactivate
激活虚拟环境以后,命令行提示符(即PS1环境变量)会显示当前虚拟环境的名字:
(my_project_env) $
查看当前安装版本
pip freeze
另外:
pip freeze > requirements.txt
这将会创建一个 requirements.txt 文件,其中包含了当前环境中所有包及 各自的版本的简单列表。这将会使另一个不同的开发者(或者需要重新创建这样的环境) 在以后安装相同版本的相同包变得容易。
pip install -r requirements.txt
requirements.txt可以帮助确保安装、部署和开发者之间的一致性,类似于nodejs项目中package.json。
如果需要手动开发依赖和生产依赖,可以手动把开发相关的依赖放到单独的文件,比如 requirements-dev.txt。
使用 pip 管理依赖(以 Flask 为例):
安装依赖:
pip install flask
更新依赖:
pip install --upgrade flask
卸载依赖:
pip uninstall flask
查看某个依赖的详细信息
pip show flask
列出所有依赖。
pip list
二、virtualenvwrapper
(仅限基于POSIX的系统,包括MacOS和Linux,但不包括Windows)
它把虚拟环境进行包装,进一步提高开发效率。
1、安装
安装(确保 virtualenv 已经安装了):
pip install virtualenvwrapperexport WORKON_HOME=~/Envs #设置环境变量mkdir -p $WORKON_HOME #创建虚拟环境管理目录
默认virtualenvwrapper安装在python解释器中的site-packages,实际上需要先运行virtualenvwrapper.sh文件:
找到virtualenvwrapper.sh的路径:
find / -name virtualenvwrapper.shsource /找到的路径/virtualenvwrapper.sh
每次要想使用virtualenvwrapper 工具时,都必须先激活virtualenvwrapper.sh,另外,如果创建前要将即将的环境保存到Envs中,就要先设置一下环境变量:
export WORKON_HOME=~/Envs
[注]对于Windows有virtualenvwrapper-win作为独立项目
在Windows中,WORKON_HOME默认的路径是%USERPROFILE%\Envs。
2、基本使用
创建一个虚拟环境:
mkvirtualenv project_env
这会在Envs 中创建 project_env虚拟环境
选择一个python解释器来搭建:
mkvirtualenv env --python=python2.7
在虚拟环境上工作:
workon project_env
[注]virtualenvwrapper 提供环境名字的tab补全功能。
workon 也能停止当前所在的环境,所以可以在环境之间快速的切换。
3、停止虚拟环境
deactivate
4、删除:
rmvirtualenv project_env
3、其他常用命令
lsvirtualenv #列举所有的环境。cdvirtualenv #导航到当前激活的虚拟环境的目录中,比如说这样您就能够浏览它的 site-packages。cdsitepackages # 和上面的类似,但是是直接进入到 site-packages 目录中。lssitepackages #显示 site-packages 目录中的内容。
参考资料[1]廖雪峰的virtualenv教程
https://www.liaoxuefeng.com/wiki/1016959663602400/1019273143120480
[2]virtualenv的介绍及基本使用
https://blog.csdn.net/u012206617/article/details/90294421
欢迎大家关注我的全新CSDN账号,将呈现细分化知识整理与精准导航,正在持续施工中。
导航页:
https://blog.csdn.net/weixin_42826353/article/details/107884463
本文由公众号技术实战派原创,遵照Creative-Course4.0协议发表。