我使用
pyenv
、pyenv-virtualenv
来管理Python虚拟环境。
我有一个项目在
Python 3.4
虚拟环境中工作。
所以所有安装的软件包(
pandas
,numpy
等)都不是最新版本。
我想做的是将
Python
版本从3.4升级到3.6,并将其他软件包版本升级到更高版本。
我怎样才能轻松做到这一点?
以下是如何针对给定的虚拟环境切换到
3.9.0
venv-name
:
pip freeze > requirements-lock.txt
pyenv virtualenv-delete venv-name
pyenv install -s 3.9.0
pyenv virtualenv 3.9.0 venv-name
pyenv activate 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 安装 python==$pythonversion$