更新现有的virtualenv以使用Python 3.6

9
我有一个名为 'edge' 的虚拟环境,它使用 Python 3.5.2。我已经将我的 Python 解释器升级到了 3.6,并希望 `edge` 环境改用 3.6。
应该使用什么命令来更新 `edge` 的解释器?
我在 SO 上搜索过,但我能找到的所有答案都是用于创建新环境的。在我的情况下,我不想创建一个新环境。

4
安装在python3.5上的所有二进制包都不兼容python3.6 -- 最好的选择是使用以下命令: edge/bin/pip freeze > reqs.txt && virtualenv edge2 -ppython3.6 && edge2/bin/pip install reqs.txt,这将把软件包列表输出到reqs.txt文件中,然后在一个名为edge2的虚拟环境里安装python3.6并使用edge2/bin/pip安装reqs.txt中的软件包。 - anthony sottile
谢谢@AnthonySottile,你介意写个答案让我接受吗? - Cheng
1个回答

10

所有在Python3.5中安装的二进制软件包(例如numpysimplejson)都与Python3.6不兼容(它们不是abi兼容的)。因此,您无法将虚拟环境升级/降级到不同版本的Python。

您最好基于原始虚拟环境中安装的软件包创建一个新的 virtualenv。您可以通过执行以下操作来实现接近相似:

edge/bin/pip freeze > reqs.txt
virtualenv edge2 -p python3.6
edge2/bin/pip install -r reqs.txt

请注意,虚拟环境通常无法移动,因此如果您希望其存在于edge,则最好使用以下过程。

edge/bin/pip freeze > reqs.txt
mv edge edge_old
virtualenv edge -p python3.6
edge/bin/pip install -r reqs.txt
# optionally: rm -rf edge_old

2
Python 3.6 推荐使用: python3 -m venv edge - A K

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接