有没有办法升级在virtualenv中使用的python版本(例如,如果bug修复版本出来了)?

我可以pip freeze——local > requirements.txt,然后删除该目录和pip install -r requirements.txt,但这需要大量重新安装大型库,例如numpy,我经常使用它。

我可以看到这是一个优势,当从,例如,2.6 -> 2.7升级,但2.7呢?X -> 2.7.y?


当前回答

我只是想澄清一下,因为有些答案指的是venv,有些指的是virtualenv。

在virtualenv上支持使用-p或——python标志,但在venv上不支持。如果你有多个Python版本,并且你想指定用哪个版本创建venv,在命令行上执行,如下所示:

malikarumi@Tetuoan2:~/Projects$ python3.6 -m venv {path to pre-existing dir you want venv in}

当然,正如其他人指出的那样,您可以使用venv进行升级,但前提是您已经升级了用于创建venv的Python。你不能升级到你系统上没有的Python版本,所以首先要确保获得你想要的版本,然后从它生成你想要的所有venv。

其他回答

步骤1:冻结要求并对现有环境进行备份

pip freeze > requirements.txt
deactivate
mv env env_old

步骤2:安装Python 3.7并激活虚拟环境

sudo apt-get install python3.7-venv
python3.7 -m venv env
source env/bin/activate
python --version

步骤3:安装需求

sudo apt-get install python3.7-dev
pip3 install -r requirements.txt

如果你碰巧使用Python 3.3+附带的venv模块,它支持——upgrade选项。 根据文档:

升级环境目录以使用此版本的Python,假设Python已在适当位置升级

python3 -m venv --upgrade ENV_DIR

在OS X或macOS上使用Homebrew安装和升级Python3,我必须在python -m venv——upgrade ENV_DIR工作之前删除符号链接。

我在upgrade_python3.sh中保存了以下文件,这样我就能记住几个月后我需要再次这样做:

brew upgrade python3
find ~/.virtualenvs/ -type l -delete
find ~/.virtualenvs/ -type d -mindepth 1 -maxdepth 1 -exec python3 -m venv --upgrade "{}" \;

更新:虽然这似乎工作得很好,当我运行py。测试它给出了一个错误。最后,我只是根据需求文件重新创建了环境。

我只是想澄清一下,因为有些答案指的是venv,有些指的是virtualenv。

在virtualenv上支持使用-p或——python标志,但在venv上不支持。如果你有多个Python版本,并且你想指定用哪个版本创建venv,在命令行上执行,如下所示:

malikarumi@Tetuoan2:~/Projects$ python3.6 -m venv {path to pre-existing dir you want venv in}

当然,正如其他人指出的那样,您可以使用venv进行升级,但前提是您已经升级了用于创建venv的Python。你不能升级到你系统上没有的Python版本,所以首先要确保获得你想要的版本,然后从它生成你想要的所有venv。

这个方法对我来说总是有效的:

# First of all, delete all broken links. Replace  my_project_name` to your virtual env name
find ~/.virtualenvs/my_project_name/ -type l -delete
# Then create new links to the current Python version
virtualenv ~/.virtualenvs/my_project_name/
# It's it. Just repeat for each virtualenv located in ~/.virtualenvs

来自:

https://github.com/1st/python-on-osx#python-virtualenv https://gist.github.com/1st/ced02a1c64ac7b82bb27e432eea6b068