Python 中的 virtualenv
开发 Python 应用程序的时候,需要安装(import)各种各样的第三方包。默认情况下,都会被安装到Python 3的 site-packages 目录下面。比如,我的第三方包统一安装在目录C:\Program Files\Python36\Lib\site-packages
下面。
但是,当我们开发多个项目的时候,如果应用A需要jinja 2.7,而应用B需要jinja 2.6怎么办?
virtualenv 就是用来为特定的应用程序创造一套独立的运行环境的。
如何你用的是Python 3,还可以直接创建虚拟环境(见第二部分)
一. 使用 virtualenv
1. 安装
1 | pip3 install virtualenv |
2. 创建一个工程目录
1 | mkdir webApp |
3. 创建独立Python运行环境
1 | virtualenv venv |
4. 进入该环境
Linux / Mac
1 | source venv/bin/activate |
Windows
1 | .\venv\Scripts\activate |
此时命令行前面出现了 (venv)
表示已经进入独立的虚拟Python运行环境
1 | (venv) D:\Python\new\venv> |
此时可以用 pip 安装该项目所需的 Python 包
1 | (venv) D:\Python\new\venv> pip install jinja2 |
5. 退出venv环境
1 | (venv) D:\Python\new\venv> deactivate |
6. 删除venv环境
删除目录即可
二. 使用 Python 3 自带的venv
virtualenv 可用在 python 2 或 python 3, 但如果是 python 3 项目, 其实还可以使用 python 3 自带的 venv
1. 创建虚拟环境
1 | python -m venv myvenv |
默认是干净的环境,如果虚拟环境中需要使用系统的环境,可用
1 | python -m venv --system-site-packages myvenv |
使虚拟环境指向系统环境包目录(非复制),在系统环境pip新安装包,在虚拟环境就可以使用。
2. 激活虚拟环境
不同的命令行工具有不同的激活方法:
bash/zsh
1 | source <venv>/bin/activate |
fish
1 | <venv>/bin/activate.fish |
csh/tcsh
1 | <venv>/bin/activate.csh |
cmd
1 | <venv>\Scripts\activate.bat |
PowerShell
1 | <venv>\Scripts\Activate.ps1 |
这里的 <venv>
指的是刚刚执行创建虚拟环境的目录
3. 关闭虚拟环境
1 | deactivate |
4. 删除虚拟环境
直接删除目录即可
下载 requirements
有时候,一个项目里所需的依赖会导出到 requirements.txt,使用以下命令来安装所有依赖
1 | pip install -r requirements.txt |
更换 pip 源
使用 -i
参数临时使用
1 | pip install -i https://pypi.tuna.tsinghua.edu.cn/simple [some-package] |
升级 pip 到最新的版本 (>=10.0.0) 后进行配置,永久使用
1 | pip install pip -U |