【问题标题】:How do I change the terminal inside Visual Studio code to use the non-Rosetta one i.e. have it use the arm64 one?如何更改 Visual Studio 代码中的终端以使用非 Rosetta 终端,即是否使用 arm64 终端?
【发布时间】:2021-10-17 05:44:01
【问题描述】:

我是 python 新手,正在尝试运行 python 2.7 script。 获得了 python 2.7 的 pip 并从 mac 终端 shell 安装了 pyCrypto 的依赖项。

我想尝试下载的python脚本,当我使用python2执行它时,它在终端应用程序中运行良好。

现在我在 vscode 中打开它并尝试在其终端中运行脚本,我得到了

ImportError: dlopen(/Users/xxx/Library/Python/2.7/lib/python/site-packages/Crypto/Cipher/_DES3.so, 2): no suitable image found.  Did find:
        /Users/xxx/Library/Python/2.7/lib/python/site-packages/Crypto/Cipher/_DES3.so: mach-o, but wrong architecture
        /Users/xxx/Library/Python/2.7/lib/python/site-packages/Crypto/Cipher/_DES3.so: mach-o, but wrong architecture

当我跑步时 uname -m 在 M1 Mac 上的 vscode 终端(zsh) 内,我看到 x86_64 的输出,暗示终端在 Rosetta 下运行并正在寻找英特尔版本的库。

当我在常规 mac 终端应用程序中运行 uname -m 时,我看到了 arm64

如何更改 vscode 中的终端以使用非 Rosetta 终端? 或者如何让脚本在 vscode 中运行?

【问题讨论】:

    标签: python python-2.7 visual-studio-code arm64 apple-m1


    【解决方案1】:

    我不熟悉 VSCode,但您可以手动强制使用 arch 命令(请参阅man arch)启动您启动的任何内容的所选架构切片。

    如果您有一个通常会像这样启动的脚本:

    ./script.py
    

    然后您可以像这样强制使用任一架构:

    arch -x86_64 ./script.py
    arch -arm64 ./script.py
    

    【讨论】:

    • 感谢 Siguza 成功了。接下来我需要弄清楚如何在 vscode 中进行调试,使其不会抛出相同的异常。
    【解决方案2】:

    我遇到了“强制”通用二进制文件在 Rosetta 2 下运行的问题,因此您可能需要下载 Intel 版本并使用稍微修改的名称(例如 VSCode (Intel))安装它,以便它们可以共存并排。

    这将强制 整个 进程树在仿真下运行,这将照顾你所有的 shell 和它下面的调试会话以相同的(仿真)方式运行。请注意这会如何干扰现有的扩展。

    【讨论】:

    • 谢谢。我最终使用 anaconda 进行解释器选择(cmd+shift+p)并为我修复了它。
    猜你喜欢
    • 2019-04-03
    • 2020-06-15
    • 1970-01-01
    • 1970-01-01
    • 2020-03-09
    • 2023-02-01
    • 2022-01-25
    • 2021-04-10
    相关资源
    最近更新 更多