如何更改 Visual Studio 代码中的终端以使用非 Rosetta 终端,即让它使用 arm64 终端?

How do I change the terminal inside Visual Studio code to use the non-Rosetta one i.e. have it use the arm64 one?

我是 python 的新手,正在尝试 运行 a 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 下 运行ning 并且正在寻找对于英特尔版本的库。

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

如何将 vscode 内的终端更改为使用非 rosetta 终端? 或者如何从 vscode?

中获取脚本到 运行

我不熟悉 VSCode,但您可以使用 arch 命令(参见 man arch)手动强制选择任何您启动的架构片段。

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

./script.py

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

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

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

这将强制 整个 进程树在仿真下 运行,这将处理它下面的所有 shell 和调试会话 运行 相同的(模拟)方式。请注意这会如何干扰预先存在的扩展。