如何用 virtualenv 创建指定 Python 版本的虚拟环境?
创建指定 Python 版本的虚拟环境:可用目标解释器运行 -m venv,或用 virtualenv 的 -p 参数指定已安装且受支持的解释器。pyenv 可管理多版本。本文介绍完整做法。
注意区分:标准库 venv 只能用创建它的那个 Python 版本;可以直接用目标解释器 /path/to/python3.x -m venv 环境名;也可安装第三方 virtualenv 包,用 python -m virtualenv -p /path/to/python3.x 环境名。前提是系统里已经装了那个版本的 Python。
使用 virtualenv 指定版本
# 安装 virtualenv
python -m pip install --user virtualenv
# 用 Python 3.10 创建虚拟环境
python -m virtualenv -p /usr/bin/python3.10 myenv
# 激活
source myenv/bin/activate
python --version # Python 3.10.x
-p 后面跟目标版本解释器的完整路径。
系统里还没有目标版本怎么办
先安装对应版本的 Python:
- Ubuntu:先核对所用版本是否支持 deadsnakes PPA;不要把 Ubuntu PPA 直接用于 Debian。Debian 应选其支持的软件源或其他受控安装方式;
- pyenv:
pyenv install 3.10.13,然后用python -m virtualenv -p ~/.pyenv/versions/3.10.13/bin/python myenv; - conda:
conda create -n myenv python=3.10,可用版本取决于平台和所配置渠道。
venv vs virtualenv
| venv(内置) | virtualenv(第三方) | |
|---|---|---|
| 安装 | 自带 | pip install |
| 指定其他版本 | 用目标解释器运行 -m venv | -p 参数,需版本受支持 |
| 创建速度 | 取决于环境和版本 | 取决于缓存、环境和版本 |
| Python 2 | 不支持 | 现代 virtualenv 不保证支持,需核对历史版本 |
常见问题(FAQ)
Q:怎么知道系统里有哪些 Python 版本?
A:ls /usr/bin/python*;或 which python3.10 python3.11;pyenv 用户用 pyenv versions。
Q:Windows 上怎么指定?
A:python -m virtualenv -p C:\Python310\python.exe myenv;装了 py 启动器也可以 py -3.10 -m virtualenv myenv。
Q:创建后 pip 装包装上哪个版本?
A:激活虚拟环境后,pip 和 python 都指向虚拟环境内的版本,互不影响。