我是 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
当我跑步时
uname -m
在 M1 Mac 上的 vscode 终端(zsh)内,我看到 x86_64
的输出,这意味着终端正在 Rosetta 下运行并正在寻找 intel 版本的库。
当我在常规 Mac 终端应用程序中运行
uname -m
时,我看到 arm64
如何更改 vscode 内的终端以使用非 Rosetta 终端? 或者如何让脚本在 vscode 中运行?
我不熟悉 VSCode,但您可以使用
arch
命令手动强制选择启动的任何内容的架构切片(请参阅 man arch
)。
如果您有一个通常会启动的脚本,例如:
./script.py
然后你可以像这样强制使用任一架构:
arch -x86_64 ./script.py
arch -arm64 ./script.py
这个问题一直发生在我身上,直到我重新安装 VSCode(arm64 版本)。当我买了一台新 Mac 并使用迁移工具时,它采用的是 Intel 版本,这最终给我带来了很多问题。安装正确版本的 VSCode 为我解决了这一切。
要在 macOS 上卸载 VS Code,请打开 Finder 并转到 Applications。右键单击 Visual Studio Code 应用程序并选择 移至垃圾箱。
完成后,您可以从他们的网站或使用
brew install visual-studio-code
重新安装它(通过在brew config
的输出中检查它来确保brew是arm64,否则您可能会再次遇到此问题)。
我在“强制”通用二进制文件在 Rosetta 2 下运行时遇到了问题,因此您可能需要下载 Intel 版本并使用稍作修改的名称(例如
VSCode (Intel)
)进行安装,以便它们可以共存 -旁边。
这将强制整个进程树在模拟下运行,这将处理其下的所有 shell 和调试会话以相同(模拟)的方式运行。请注意这可能会如何干扰预先存在的扩展。