python - Macos Catalina 破坏了所有 Python Venvs

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

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

  • 我有一个在升级到 Catalina 之前创建的 venv。
  • 我可以毫无问题地激活 venv:source venv/bin/activate
  • 当我输入 pythonpython3 ,它实际上运行系统 Python 解释器,而是 我的 venv 中预期的 Python 解释器。

  • 激活我的venv...
    >>> which python
    /usr/bin/python
    >>> which python3
    /usr/local/bin/python3
    

    我希望它指向 /Users/<username>/<path-to-venv>/venv/bin/python3 .
  • 如果我尝试直接运行那个 Python 解释器:
  • >>> /Users/<username>/<path-to-venv>/venv/bin/python3
    
    bash: /Users/<username>/<path-to-venv>/venv/bin/python3: No such file or directory
    
  • 如果我在 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 虚拟环境。

    最佳答案

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

  • 对于创建它是您可能已经使用过的命令

  • python3 -m venv <path_to_dir>
    
  • 为了更新,--upgrade参数是你要找的。

  • 您需要使用目标 Python 版本运行它,例如在本例中:

    python3 -m venv --upgrade <path_to_dir>
    

    更多详情请看我的回答here

    关于python - Macos Catalina 破坏了所有 Python Venvs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59438630/

    相关文章:

    php - 将 OS X 更新到 El Capitan 后的 Mcrypt 问题

    swift - 为什么 NSLocale.current.identifier 在 macOS 上包含货币?

    python - Keras 训练批处理 : Is the training loss computed before or after each optimization step?

    python - 如何使用数组值列表检查数组?

    python tkinter Canvas 'transparent'

    python - 创建以文件名作为键的目录字典

    python - 覆盖python中的内置类型__str__方法

    python - 如何使类属性不可变?

    python - Django,查询问题

    macos - 使监视文件夹等待文件完成渲染