Virtualenvs 直接依赖于创建它们的 python 运行时,因此当您删除运行时时,virtualenv 也会停止工作。
解决方案是使用pipenv而不是包,因为它在顶级文件夹中virutalenv
名为Pipfile的文件中包含项目的所有依赖项。Arch Linux 中有一个 pipenv包。对于独立的 python 安装,可以使用pip3 install pipenv
.
每当 Python 被替换(或者在您的情况下升级)时,您必须删除以前pipenv --rm
在环境所在目录中使用的 virtualenv。但是在升级 Python 之后,您必须手动编辑 Pipfile 以python_version = "3.7"
从文件中删除(或任何版本)行,因为这会导致pipenv shell
或python3
在旧环境被删除后其中的调用失败。
请注意,在此方法中,virtualenv 仍与您运行的 python 版本相关联pipenv shell
。如果您同时安装另一个 python 版本,为其安装 pipenv 包并尝试运行pipenv shell
,它将使用创建它的 virtualenv(第一个 python 运行时)的 python 运行时。
我通过在 Cloud9 上构建 Python 3.7 运行时测试了所有这些,并获得了 pipenv。然后我删除了它并使用 pipenv 在同一安装目录中构建了一个 Python 3.5 运行时。然后我也删除了它并类似地构建了 Python 3.8。最后,我安装了 Python 3.7 和 3.8,两者都使用 pipenv。