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

chh*_*hil 6 python python-2.7 arm64 visual-studio-code apple-m1

我是 python 新手,正在尝试运行 python 2.7脚本。获取了 python 2.7 的 pip 并从 mac 终端 shell 安装了 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
Run Code Online (Sandbox Code Playgroud)

当我 uname -m在 M1 Mac 上的 vscode 终端 (zsh) 中运行时,我看到 的输出x86_64,这意味着终端正在 Rosetta 下运行并正在寻找该库的 intel 版本。

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

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

Sig*_*uza 8

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

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

./script.py
Run Code Online (Sandbox Code Playgroud)

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

arch -x86_64 ./script.py
arch -arm64 ./script.py
Run Code Online (Sandbox Code Playgroud)