Python:如何在pyenv-virtual-environment中更新python版本?

use*_*632 5 python virtualenv pyenv

我使用的pyenvpyenv-virtualenv用于管理蟒蛇虚拟环境。

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

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

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

我如何轻松做到这一点?

cgl*_*cet 41

以下是切换给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
Run Code Online (Sandbox Code Playgroud)

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

rm requirements-lock.txt
Run Code Online (Sandbox Code Playgroud)

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


phd*_*phd 6

使用pip freeze > requirements.txt以节省安装的软件包列表。

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

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


Ket*_*eto 6

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


将您的包保存到不带版本的需求文件中。

pip freeze | cut -d"=" -f1 > requirements-to-upgrade.txt
Run Code Online (Sandbox Code Playgroud)

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

pyenv virtualenv-delete venv-name
pyenv virtualenv 3.6.8 venv-name
pip install -r requirements-to-upgrade.txt
Run Code Online (Sandbox Code Playgroud)

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