如何用 virtualenv 创建指定 Python 版本的虚拟环境?
创建指定 Python 版本的虚拟环境:venv 只能用当前版本,virtualenv 包支持 -p 参数指定其他版本的解释器路径。pyenv 可管理多版本。本文介绍完整做法。
注意区分:标准库 venv 只能用创建它的那个 Python 版本;要指定其他版本需安装第三方 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/Debian:用 deadsnakes PPA 安装多版本;
- 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,conda 环境天然支持任意版本。
venv vs virtualenv
| venv(内置) | virtualenv(第三方) | |
|---|---|---|
| 安装 | 自带 | pip install |
| 指定其他版本 | ❌ | ✅ -p 参数 |
| 创建速度 | 较慢 | 快 |
| Python 2 | ❌ | ✅ |
常见问题(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 都指向虚拟环境内的版本,互不影响。