Mac OSX Catalina打破了所有Python Venv的

时间:2019-12-21 18:06:30

标签: python python-3.x macos virtualenv macos-catalina

最近刚刚升级到Mac OSX Catalina,它似乎破坏了我所有的Python venv。

  1. 我有一个以前在升级到Catalina之前创建的venv。
  2. 我可以无问题地激活venv:source venv/bin/activate
  3. 当我键入pythonpython3时,它实际上运行系统Python解释器,而不是我的Venv中期望的Python解释器。

激活我的静脉...

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

我希望它指向/Users/<username>/<path-to-venv>/venv/bin/python3

  1. 如果我尝试直接运行该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虚拟环境。

1 个答案:

答案 0 :(得分:0)

您可以尝试在同一文件夹中创建新的虚拟电话或更新现有的虚拟电话。通过以下所有操作,我假定您已经使用捆绑的venv模块创建了虚拟环境

  • 对于创建来说,这是您可能已经使用过的命令
python3 -m venv <path_to_dir>
  • 要更新,请使用--upgrade参数。

您需要使用目标Python版本运行它,例如,在这种情况下:

python3 -m venv --upgrade <path_to_dir>

有关更多详细信息,请参见我的答案here