杰瑞科技汇

virtualenv指定python

使用 -p--python 参数 (最推荐)

这是最直接、最清晰、最常用的方法。-p--python 参数后面可以跟 Python 解释器的路径,或者一个可执行文件的名称(如 python3.9)。

virtualenv指定python-图1
(图片来源网络,侵删)

场景1:使用特定版本的 Python 可执行文件名

如果你的系统中已经安装了多个 Python 版本(python3.8, python3.9, python3.10),并且它们都在系统的 PATH 环境变量中,你可以直接使用它们的名称。

示例:创建一个使用 Python 3.9 的虚拟环境

# 假设你系统中有 python3.9 这个命令
virtualenv -p python3.9 my_project_env

或者使用长格式:

virtualenv --python python3.9 my_project_env

执行过程:

virtualenv指定python-图2
(图片来源网络,侵删)
$ virtualenv -p python3.9 my_project_env
created virtual environment CPython3.9.7.final.0-64 in 123ms
  creator CPython3Posix(dest=/path/to/your/my_project_env, clear=False, no_vcs_ignore=False, global=False)
  seeder FromAppData(download=False, pip=bundle, setuptools=bundle, wheel=bundle, via=copy, app_data_dir=/home/user/.local/share/virtualenv)
    added seed packages: pip==23.1.2, setuptools==68.0.0, wheel==0.40.0
  activators BashActivator,CShellActivator,FishActivator,NushellActivator,PowerShellActivator,PythonActivator

场景2:使用 Python 解释器的完整路径

如果你想要使用的 Python 版本不在 PATH 中,或者你想确保使用的是某个特定路径下的 Python,你可以提供其完整的绝对路径。

如何查找 Python 解释器的路径?

你可以使用 which (在 Linux/macOS) 或 where (在 Windows) 命令来查找。

在 Linux/macOS 上:

$ which python3.9
/usr/bin/python3.9

在 Windows 上:

> where python3.9
C:\Users\YourUser\AppData\Local\Programs\Python\Python39\python.exe

示例:使用完整路径创建虚拟环境

假设你找到的 Python 3.10 路径是 /usr/local/bin/python3.10

virtualenv -p /usr/local/bin/python3.10 my_project_env

使用 VIRTUALENV_PYTHON 环境变量 (适合自动化)

如果你希望为当前终端会话中的所有 virtualenv 命令都指定一个默认的 Python 版本,可以设置 VIRTUALENV_PYTHON 环境变量,这在 CI/CD 流水线或自动化脚本中非常有用。

示例:

# 设置环境变量,指定默认 Python 版本为 3.8
export VIRTUALENV_PYTHON=python3.8
# 现在创建虚拟环境时,会自动使用上面指定的 Python 版本
# -p 参数可以省略
virtualenv my_project_env

验证:

创建后,你可以进入虚拟环境并检查 Python 版本:

source my_project_env/bin/activate
(my_project_env) $ python --version
Python 3.8.16

注意: 这个环境变量只在当前终端会话中有效,关闭终端后,设置会失效,如果你想永久设置,可以将其添加到你的 shell 配置文件中(如 ~/.bashrc, ~/.zshrc),但通常不推荐这样做,因为这可能会影响你系统的默认行为。


手动复制 Python 解释器 (不推荐,仅作了解)

这是一种比较“暴力”且不推荐的方法,主要用于理解 virtualenv 的工作原理。virtualenv 实际上是复制一个已有的 Python 解释器,然后在复制品上安装 pipsetuptools 等工具,从而创建一个隔离的环境。

你可以先找到你想要的 Python 解释器,然后手动复制它,并用这个副本去创建虚拟环境。

示例:

# 1. 找到你想要的 Python 解释器路径
$ which python3.10
/usr/bin/python3.10
# 2. 创建一个目录来存放这个副本
$ mkdir ~/python_custom
$ cp /usr/bin/python3.10 ~/python_custom/
# 3. 使用这个副本创建虚拟环境
$ virtualenv -p ~/python_custom/python3.10 my_project_env

为什么不推荐? 这种方法很繁琐,而且容易出错,如果原始的 Python 解释器被更新或移动,你的副本就会失效。方法一(使用 -p 参数)是完成这项任务的标准和最佳方式。


总结与最佳实践

方法 命令示例 优点 缺点 推荐度
-p / --python 参数 virtualenv -p python3.9 my_env 最直接、最清晰、最标准 每次创建都需要指定 ⭐⭐⭐⭐⭐
VIRTUALENV_PYTHON 环境变量 export VIRTUALENV_PYTHON=python3.8 适合自动化,无需每次指定 会改变当前会话的默认行为 ⭐⭐⭐⭐
手动复制解释器 cp python3.9 my_copy/; virtualenv -p my_copy/python3.9 my_env 繁琐、易出错、不维护

最佳实践:

  1. 始终使用 virtualenv -p <python_version> <env_name>,这是最可靠、最易读的方式。
  2. 在项目根目录创建一个 requirements.txt 文件来记录依赖。
  3. 在团队协作时,最好在项目文档中明确说明所需的 Python 版本,这样每个人都可以使用相同的命令创建环境。
  4. 考虑使用更现代的虚拟环境管理工具,如 venv (Python 3.3+ 内置) 或 pipenv / poetry,它们在处理多版本依赖方面功能更强大,但 virtualenv 至今仍然是轻量级和广泛使用的优秀工具。
分享:
扫描分享到社交APP
上一篇
下一篇