Mac OSX Catalina破坏了所有Python虚拟环境

6

最近升级到了Mac OSX Catalina,好像破坏了我所有的Python虚拟环境。

  1. 我之前在升级到Catalina之前创建了一个虚拟环境。
  2. 我可以成功激活虚拟环境:source venv/bin/activate
  3. 当我输入pythonpython3时,它实际上运行的是系统Python解释器,而不是我期望的虚拟环境中的Python解释器。

在激活我的虚拟环境后...

>>> which python
/usr/bin/python
>>> which python3
/usr/local/bin/python3

我希望这指向/Users/<username>/<path-to-venv>/venv/bin/python3
4. 如果我尝试直接运行该Python解释器:
>>> /Users/<username>/<path-to-venv>/venv/bin/python3

bash: /Users/<username>/<path-to-venv>/venv/bin/python3: No such file or directory
  1. 如果我在Finder中导航到这个venv目录,我可以看到python3文件存在,但实际上它是一个别名。如果我双击它,会弹出一个错误消息,内容为:The operation can't be completed because the original item for "Python3" can't be found.

因此我认为这些venv的工作方式是基于对现有Python解释器安装的引用。显然运行venv会调用这些引用,如果原始安装有问题,它就会失败。我知道Catalina破坏了默认的Python设置,并改变了安装目录。

有人遇到过类似情况吗?能否提供修复方法?这似乎影响了我系统中所有的venv虚拟环境。


3
重新生成虚拟环境可能比修复依赖于更新前路径的环境更容易。 - chepner
1
激活虚拟环境是一项非常轻量级的操作:它只设置一些环境变量,如 PATH。它不依赖于您期望实际存在的解释器。 - chepner
@hobscrk777,你找到解决方案了吗?我也遇到了同样的问题。 - Craig Nathan
1个回答

1
你可以尝试在同一文件夹中创建新的 venv,或更新现有的 venv。以下所有操作都假定你使用了捆绑的 venv 模块创建了虚拟环境。
  • 对于创建,这是您可能已经使用过的命令
python3 -m venv <path_to_dir>
  • 为了更新,你需要使用--upgrade参数。

你需要在指定的Python版本下运行它,例如在这种情况下:

python3 -m venv --upgrade <path_to_dir>

更多细节,请查看我的答案这里


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