【问题标题】:How to get Conda and Virtualenv to work on mac OS Catalina?如何让 Conda 和 Virtualenv 在 mac OS Catalina 上工作?
【发布时间】:2020-02-06 04:15:58
【问题描述】:

我之前在 Mojave 上运行过 Conda,但我发现升级到 Catalina 会将“anaconda3”文件夹移动到您的桌面 > 重新定位的项目 > 安全 > anaconda3。似乎 Catalina 的安全设置可能不再允许应用程序直接安装在用户目录下。

我尝试了here的建议,写在下面:

你好,我可能有一个解决方案

  • 将位于 Relocated Items 中的文件夹 anaconda3 复制到 /Users/myname/
  • 打开终端
  • 输入:export PATH=''/Users/myname/anaconda3/bin:$PATH"
  • 输入:conda init zsh

成功了!祝你好运!

但这对我不起作用。在conda init zsh 之后我得到:

-bash: /Users/USER/anaconda3/bin/conda: /anaconda3/bin/python: 错误的解释器:没有这样的文件或目录

我怎样才能让 Conda 再次启动并运行而不丢失我所有的虚拟环境?谢谢!


更新

我按照@Ted Shaowang 的建议让 Conda 开始工作。这意味着conda env list 显示了通过 Conda 创建的所有虚拟环境。

但是我仍然遇到virtualenv 的问题,因为我更改了默认的 anaconda3 文件位置,找不到 python。

找不到位于.virtualenvs/env/bin/python 的python 可执行文件。我是否需要进行进一步的更改才能使 python 也可以从 virtualenv 工作?

【问题讨论】:

  • 从您的错误来看,您似乎仍在使用bash,但建议的解决方案是zsh(新的Catalina 默认值)。请改用conda init bash
  • 我遇到了同样的错误。 bash 也不起作用。

标签: python macos conda


【解决方案1】:

这对我有用。

这些是我的头文件(Catalina 10.15):

/Library/Developer/CommandLineTools/usr/include/c++/v1/stdio.h
/Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/usr/include/sys/stdio.h
/Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/usr/include/stdio.h
/Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/System/Library/Frameworks/Kernel.framework/Versions/A/Headers/sys/stdio.h
/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include/sys/stdio.h
/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include/stdio.h
/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/System/Library/Frameworks/Kernel.framework/Versions/A/Headers/sys/stdio.h

运行sudo find /Library -name stdio.h 以查看您的位置。

Mojave 10.14 头文件:

$ sudo find /Library -name stdio.h 
/Library/Developer/CommandLineTools/usr/include/c++/v1/stdio.h
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/stdio.h
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/stdio.h
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/Kernel.framework/Versions/A/Headers/sys/stdio.h

可以看出,与 Mojave 不同,SDK 现在分为 MACOSX10.14 和 10.15。

TLDR

所以,这些是我在 Catalina 上的 SDK 文件夹:

  1. MacOSX.sdk 重命名为MacOSX_orig.sdk
  2. 右击MacOSX10.14.sdk
  3. 复制
  4. 将重复的文件夹重命名为MacOSX.sdk

您的文件夹结构现在应该如下所示:

像这样,我们基本上使用以前版本的 OSX sdk 作为 sysroot。希望这会有所帮助。

【讨论】:

    【解决方案2】:

    我有完全相同的问题,这对我有用:

    将 anaconda 从“重新定位的项目”移动到 ~/anaconda3 后,将 ~/anaconda3/bin/conda 文件的第一行从 #!/anaconda3/bin/python 编辑到 #!/Users/USERNAME/anaconda3/bin/python 以反映更改。

    【讨论】:

    • 这会影响 pip 和 Jupyter 设置吗?
    • 这似乎并不能解决与 anaconda3 和 python 相关的所有问题。我收到错误:无法运行程序"/Users/USER/.virtualenvs/env/bin/python" 没有这样的文件或目录。当我在 Finder 中签入时,该文件确实丢失并且无法找到。
    【解决方案3】:

    如果不修复文件中嵌入的硬编码前缀条目,任何解决方案都不会完全有效。 https://www.anaconda.com/how-to-restore-anaconda-after-macos-catalina-update/ 有更长的描述和推荐的修复方法

    【讨论】:

      【解决方案4】:

      我遇到了同样的问题,以下解决方案对我有用,这是最简单的解决方案:

      与其将 anaconda3 文件从重新定位的项目复制到 User/USERNAME 目录中,不如从其官方网站重新安装 anaconda navigator 的最新版本:https://www.anaconda.com/distribution/#macos

      在安装时,它会询问您一些权限,这些权限是新的 Apple 安全策略的结果,只需授予它们,它就会按照全新安装后的方式工作!

      【讨论】:

        【解决方案5】:

        我有同样的问题,这对我有用: 我的解决方案:

        1. 从 Relocated Items 文件夹中复制 anaconda3
        2. 粘贴用户/您的用户名
        3. 用编辑器打开anaconda3/bin中的conda文件,将第一行#!/anaconda3/bin/python编辑成#!/Users/YourUserName/anaconda3/bin/python
        4. 保存并运行 conda 文件
        5. 打开终端
        6. 运行这个:export PATH=''/Users/YourUserName/anaconda3/bin:$PATH"
        7. 运行conda init zsh

        【讨论】:

        • 我是否需要进行进一步的更改才能让 python 也可以从 virtualenv 工作?
        【解决方案6】:

        从技术上讲,这是重新安装 anaconda,但是,我恢复了所有 conda 环境,希望这是一个可以接受的解决方案!

        这是我几分钟前在 Catalina 上工作的方法(现在使用 z-shell): - 验证我的桌面上是否存在“Relocated Items”目录以及“anaconda3”目录及其里面的内容 - 导航到“anaconda3”下的 envs 目录并保持 finder 窗口打开(见截图)

        那么:

        • 打开新终端(z-shell)
        • 运行(安装到 /usr/local/anaconda3):

          brew cask install anaconda

        • 安装成功后,我打开了我的 ~/.zshrc 文件(对于我的 z-shell 别名)并添加了以下行:

          export PATH="/usr/local/anaconda3/bin:$PATH"

        • 保存了我的 ~/.zshrc 文件,然后重新加载:

          来源 ~/.zshrc

        • 为了验证 conda 命令现在是否有效,我运行了:

          conda 环境列表

        • 对我来说,这显示了一个基本环境,就是这样

        • 然后打开 Finder 到新的 envs 位置: 打开 /usr/local/anaconda3/envs/。

        • 我将所有旧 envs 拖(移动)到新的 envs 文件夹中,然后运行:

          conda 环境列表

        我所有的旧环境都回来了! :)

        • 更新了我的 PyCharm 解释器/环境路径以反映这些环境的新位置(之后必须重新启动 PyCharm,但现在它可以工作了!)
        • 完成

        【讨论】:

        • 感谢您的建议。这对virtualenv 也有用吗?我有一些 virtualenvs 无法在 Pycharm 中使用,因为我不断收到错误:无法运行程序“/Users/USER/.virtualenvs/baseline_env/bin/python”没有这样的文件或目录。也可以得到"The original item python cannot be found.
        • 请参阅博客文章,推荐一种工具来修复更多断开的连接:anaconda.com/…
        • @Rrz0 根据你写的我猜 virtualenv 的路径是错误的。这很 hacky,但是如果你可以访问你的 virtualenv,我认为你应该能够复制它的路径并编辑 PyCharm 中的条目(如果 virtualenvs 在移动项目交易中,那么我不确定在哪里建议你放置它们)-如果您可以使用旧的 virtualenvs,则可以(一个接一个)从 shell 激活它们并运行: pip freeze > requirements_VENV_NAME.txt - 在 PyCharm 创建新的 virtualenvs - 激活每个新的 virtualenv 并运行:pip install - r requirements_VENV_NAME.txt
        • 谢谢@PhilS,这些方法最终奏效了。
        【解决方案7】:

        不确定这是否被视为评论或至少是临时答案,但我暂时不会尝试修复与 Anaconda 的任何 Catalina 兼容性问题。请参阅此GitHub 问题。

        【讨论】:

          【解决方案8】:

          我可能会放弃使用上述解决方案。 ~/anaconda3/bin 目录有许多需要以这种手动方式更改的可运行文件(不仅仅是 conda 一个)。例如,除非您进行相同的更改,否则您无法运行jupyter notebook,既不能从base 也不能从您可能拥有的其他环境运行。

          我的提示:尝试获取虚拟环境的需求文件,然后进行全新安装。您可以使用pipreqs 获取用于单个项目的需求:https://www.idiotinside.com/2015/05/10/python-auto-generate-requirements-txt/

          【讨论】:

          • 感谢您的建议。正如你所说,virtualenv 也存在问题。
          • 请参阅博客文章,推荐解决这些问题的工具:anaconda.com/…
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-10-11
          • 1970-01-01
          • 2020-02-28
          • 1970-01-01
          • 2020-04-12
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多