我用pyenv
,pyenv-virtualenv
来管理python虚拟环境。
我有一个在虚拟环境中工作的项目Python 3.4
。
所以所有已安装的软件包(pandas
,numpy
等(都不是最新版本。
我想做的是将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$