如何将 Visual Studio Code 内的终端更改为使用非 Rosetta 版本,即使用 arm64 版本?

6

我刚接触Python并尝试运行一个2.7版本的脚本。我已经在Mac终端中使用pip安装了pyCrypto相关依赖。

当我在终端应用程序中使用python2来执行下载的Python脚本时,它可以正常运行。

现在我在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

当我在M1 Mac上的vscode终端(zsh)中运行uname -m命令时,输出结果为x86_64,表示该终端正在Rosetta环境下运行,并寻找英特尔版本的库。
而当我在常规的Mac终端应用程序中运行uname -m命令时,输出结果为arm64
如何更改vscode内部终端以使用非Rosetta环境? 或者如何让脚本从vscode中运行?
3个回答

8

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

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

./script.py

那么您可以像这样强制使用任何一种架构:

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

谢谢Siguza,这解决了问题。接下来我需要弄清楚如何在VSCode中进行调试,以便它不会抛出相同的异常。 - chhil

1
这个问题一直困扰着我,直到我重新安装了VSCode(arm64版本)。当我换了一台新的Mac并使用迁移工具时,它安装了Intel版本,结果给我带来了很多问题。安装正确版本的VSCode解决了所有问题。
要在macOS上卸载VS Code,请打开Finder并转到Applications。右键单击Visual Studio Code应用程序,然后选择移到废纸篓。
完成以上步骤后,您可以从他们的网站重新安装它,或者使用“brew install visual-studio-code”命令(确保brew是arm64版本,通过检查“brew config”的输出,否则可能会再次遇到此问题)。

这对我有用 - adejones

0

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

这将强制整个进程树在仿真下运行,从而处理所有您的 shell 和调试会话以相同的方式运行(仿真)。请注意,这可能会干扰现有的扩展功能。


谢谢。最终我使用Anaconda进行解释器选择(cmd+shift+p),这为我解决了问题。 - chhil

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