升级到Ubuntu 20.04后,Python 3.7的虚拟环境(venv)出现问题。

11

我刚刚升级到Ubuntu 20.04,我正在使用虚拟环境中的Django开发一个Python 3.7项目。我原本以为即使操作系统升级(这涉及到Python 3.8的安装),我的虚拟环境仍然能够工作。但不幸的是,事实并非如此:当我激活我的虚拟环境时,Python解释器仍是3.8版本,而且什么都不能用。Python 3.7已经完全消失了。我该怎么做才能恢复我的项目呢?


在执行 **python3 -m venv --upgrade venv/ ** 并手动重新安装每个 Python 模块后,它可以正常工作。现在,我的 Git 存储库仍然引用旧的 Python 版本,我需要采取哪些预防措施以避免丢失存储库?理论上,在 GitHub 上没有直接引用虚拟环境,因此对使用的 Python 版本应该是透明的。我错了吗? - dc_Bita98
不确定你在问什么。但我认为通常考虑虚拟环境作为一次性的东西是有帮助的。一旦发生变化,毫不犹豫地删除它们并创建新的虚拟环境。正确的工具可以帮助促进这一点。首先要做的是策划精确的依赖列表,例如使用 requirements.txt 文件。从一个 Python 解释器版本转移到另一个版本应该是无痛的。 - sinoroc
根据您的指示,我已删除 venv 文件夹并重新创建它。然后安装了 requirements.txt 中所需的模块,一切正常运行。我只是担心可能错过了什么。 - dc_Bita98
2个回答

3

我也遇到了同样的问题。如果你不想升级所有的东西(或许并非所有的包都需要升级),这是我的解决方案。

  1. Install python 3.7 which is gone with upgrade to ubuntu 20

    sudo add-apt-repository ppa:deadsnakes/ppa
    sudo apt-get update
    sudo apt-get install python3.7
    
  2. in your virtualenv dir (e.g env/) edit last line in pyenv.cfg

    version = 3.7
    
  3. set back soft link of python3 in env/bin linking back to 3.7

    ln -s  /usr/bin/python3.7 python3
    

在创建新的符号链接之前,您可能需要删除旧的符号链接。

现在应该可以正常工作:对我来说确实如此!


1
错误:'python3.7' 没有安装候选项。 - pookie

1
在我的情况下,只需删除并重新创建虚拟环境,然后重新安装Django即可解决问题。之后,重新加载Apache,一切都能正常工作。

是的,只需将virtualenv视为一种即插即用的项目。 - dc_Bita98

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