如何在 pyenv virtualenv 中升级 Python 版本和软件包



我用pyenvpyenv-virtualenv来管理python虚拟环境。

我有一个在虚拟环境中工作的项目Python 3.4

所以所有已安装的软件包(pandasnumpy等(都不是最新版本。

我想做的是将Python版本从 3.4 升级到 3.6,并将其他软件包版本升级到更高的版本。

我怎样才能轻松地做到这一点?

以下是为

给定的虚拟环境venv-name切换到3.9.0的方法:

pip freeze > requirements-lock.txt
pyenv virtualenv-delete venv-name
pyenv virtualenv 3.9.0 venv-name
pip install -r requirements-lock.txt

一切正常后,您可以安全地删除临时要求锁定文件

rm requirements-lock.txt

请注意,使用 pip freeze > requirements.txt 通常不是一个好主意,因为此文件通常用于处理包要求(不一定是pip freeze输出(。最好使用不同的(临时(文件以确保。

使用 pip freeze > requirements.txt 保存已安装软件包的列表。

使用 python 3.6 创建一个新的 venv。

使用 pip install -r requirements.txt 安装已保存的软件包。当 pip 在其缓存中找到一个通用轮时,它会从缓存中安装包。其他软件包将被下载、缓存、构建和安装。

OP要求与Python一起升级软件包。没有其他答案可以解决软件包的升级问题。锁定文件不是这里的答案。

<小时 />

将包保存到没有版本的要求文件中。

pip freeze | cut -d"=" -f1 > requirements-to-upgrade.txt

删除您的环境,使用升级的 Python 版本创建一个新环境,然后安装需求文件。

pyenv virtualenv-delete venv-name
pyenv virtualenv 3.6.8 venv-name
pip install -r requirements-to-upgrade.txt

pip 中的依赖解析器应尝试查找最新的包。这假设您已安装升级 Python 版本(例如,pyenv install 3.6.8 (。

如果你使用anaconda,只需输入

conda install python==$pythonversion$

最新更新