我使用 pyenv
和 pyenv-virtualenv
来管理 Python 虚拟环境。
我有一个在 Python 3.4
虚拟环境中工作的项目。
所以所有安装的包(如 pandas
、numpy
等)都不是最新版本。
我想做的是升级 Python
版本从 3.4 到 3.6,同时将其他包的版本升级到更高的版本。
我应该如何轻松地实现这个目标?
我使用 pyenv
和 pyenv-virtualenv
来管理 Python 虚拟环境。
我有一个在 Python 3.4
虚拟环境中工作的项目。
所以所有安装的包(如 pandas
、numpy
等)都不是最新版本。
我想做的是升级 Python
版本从 3.4 到 3.6,同时将其他包的版本升级到更高的版本。
我应该如何轻松地实现这个目标?
pip freeze > requirements-lock.txt
pyenv virtualenv-delete venv-name
pyenv install -s 3.9.0
pyenv virtualenv 3.9.0 venv-name
pip install -r requirements-lock.txt
rm requirements-lock.txt
pip freeze > requirements.txt
并不是一个好主意,因为这个文件通常用来处理您的包需求(不一定是pip freeze的输出)。最好使用一个不同的(临时的)文件来确保安全。pyenv install -v 3.9.0
。 - undefinedpip install -r requirements-lock.txt
之前,你还需要通过运行pyenv activate venv-name
来激活虚拟环境。 - undefined使用 pip freeze > requirements.txt
命令保存已安装的包列表。
使用 Python 3.6 创建一个新的虚拟环境。
使用 pip install -r requirements.txt
安装保存的包。当 pip 在其缓存中找到通用的 wheel 包时,它将从缓存中安装该包。其他的包将被下载、缓存、构建和安装。
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
)。