使用virtualenv创建指定Python版本的虚拟环境

使用virtualenv创建指定Python版本的虚拟环境

技术背景

在Python开发中,不同的项目可能依赖于不同版本的Python。虚拟环境可以帮助开发者在同一台机器上为不同的项目创建独立的Python运行环境,避免版本冲突。virtualenv 是一个常用的创建Python虚拟环境的工具,从Python 3.3开始,Python标准库中也提供了 venv 模块来创建虚拟环境。本文将介绍如何使用 virtualenvvenv 创建指定Python版本的虚拟环境。

实现步骤

使用 virtualenv 创建指定Python版本的虚拟环境

  1. 安装 virtualenv:如果尚未安装 virtualenv,可以使用 pip 进行安装:
1
pip install virtualenv
  1. 创建虚拟环境:使用 --python-p 选项指定Python解释器的路径或版本。例如,要创建一个使用Python 2.6的虚拟环境,可以使用以下命令:
1
virtualenv --python="/usr/bin/python2.6" "/path/to/new/virtualenv/"

如果使用 virtualenvwrapper,可以使用 mkvirtualenv 命令:

1
mkvirtualenv -p python2.6 env

使用 venv 创建指定Python版本的虚拟环境

从Python 3.3开始,可以使用 venv 模块创建虚拟环境。要创建一个使用特定Python版本的虚拟环境,只需使用相应版本的Python解释器运行 venv 模块。例如,要创建一个使用Python 3.6的虚拟环境,可以使用以下命令:

1
python3.6 -m venv "my_env_name"

在共享主机环境中安装并编译Python并创建虚拟环境

如果在共享主机环境中,可能需要从源代码安装并编译Python,然后创建虚拟环境。以下是一个安装Python 2.7.9并创建虚拟环境的示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 下载并解压Python源代码
mkdir ~/src
wget http://www.python.org/ftp/python/2.7.9/Python-2.7.9.tgz
tar -zxvf Python-2.7.9.tgz
cd Python-2.7.9

# 配置并安装Python
mkdir ~/.localpython
./configure --prefix=$HOME/.localpython
make
make install

# 下载并安装virtualenv
cd ~/src
wget https://pypi.python.org/packages/5c/79/5dae7494b9f5ed061cff9a8ab8d6e1f02db352f3facf907d9eb614fb80e9/virtualenv-15.0.2.tar.gz#md5=0ed59863994daf1292827ffdbba80a63
tar -zxvf virtualenv-15.0.2.tar.gz
cd virtualenv-15.0.2/
~/.localpython/bin/python setup.py install

# 创建并激活虚拟环境
virtualenv ve -p $HOME/.localpython/bin/python2.7
source ve/bin/activate

核心代码

使用 virtualenv 创建指定Python版本的虚拟环境

1
virtualenv --python="/path/to/python" "/path/to/new/virtualenv/"

使用 venv 创建指定Python版本的虚拟环境

1
pythonX.Y -m venv "my_env_name"

在共享主机环境中安装并编译Python并创建虚拟环境

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 下载并解压Python源代码
mkdir ~/src
wget http://www.python.org/ftp/python/X.Y.Z/Python-X.Y.Z.tgz
tar -zxvf Python-X.Y.Z.tgz
cd Python-X.Y.Z

# 配置并安装Python
mkdir ~/.localpython
./configure --prefix=$HOME/.localpython
make
make install

# 下载并安装virtualenv
cd ~/src
wget https://pypi.python.org/packages/.../virtualenv-VERSION.tar.gz
tar -zxvf virtualenv-VERSION.tar.gz
cd virtualenv-VERSION/
~/.localpython/bin/python setup.py install

# 创建并激活虚拟环境
virtualenv ve -p $HOME/.localpython/bin/pythonX.Y
source ve/bin/activate

最佳实践

  • 使用环境变量:可以设置 VIRTUALENV_PYTHON 环境变量,避免每次创建虚拟环境时都指定 -p 选项。例如,在 ~/.bashrc 文件中添加以下行:
1
export VIRTUALENV_PYTHON=/path/to/desired/version
  • 使用 pyenvpyenv-virtualenvpyenv 是一个管理Python版本的工具,pyenv-virtualenvpyenv 的一个插件,用于管理虚拟环境。使用这两个工具可以更方便地创建和管理不同版本的Python虚拟环境。例如:
1
2
3
4
5
6
7
8
9
10
11
# 安装pyenv和pyenv-virtualenv
brew install pyenv pyenv-virtualenv

# 安装Python版本
pyenv install 3.11.6

# 创建虚拟环境
pyenv virtualenv 3.11.6 name-of-your-venv

# 激活虚拟环境
pyenv activate name-of-your-venv
  • 使用 PoetryPoetry 是一个Python项目管理和依赖管理工具,它可以自动创建和管理虚拟环境,并处理项目的依赖关系。例如:
1
2
3
4
5
6
7
8
9
10
11
12
# 安装Poetry
curl -sSL https://install.python-poetry.org | python3 -

# 创建新项目
poetry new my_project
cd my_project

# 设置Python版本
poetry env use 3.11.6

# 安装依赖
poetry install

常见问题

找不到指定的Python版本

确保指定的Python版本已经安装在系统中。可以使用 which 命令查找Python解释器的路径:

1
which pythonX.Y

使用 sudo 安装包时使用了系统的Python版本

当在虚拟环境中使用 sudo 安装包时,sudo 会使用系统的Python版本。可以避免使用 sudo,或者在虚拟环境中安装所需的包。

pyvenvpython3 -m venv 不安装 python-config 脚本

这可能会导致在激活虚拟环境后,系统的 python-config 脚本仍然被调用。可以手动安装 python-config 脚本,或者使用 virtualenv 来创建虚拟环境。

虚拟环境中使用了别名的Python版本

如果在 bash_aliases 中设置了 python 的别名,虚拟环境中也会使用该别名。可以避免设置别名,或者在创建虚拟环境时明确指定Python版本。


使用virtualenv创建指定Python版本的虚拟环境
https://119291.xyz/posts/2025-04-15.use-virtualenv-with-different-python-versions/
作者
ww
发布于
2025年4月15日
许可协议