Sea*_*eng 12 python macos pip virtualenv apple-m1
当我在 MacBook M1 芯片 virtualenv 中执行 pip 或 python 时,该进程总是立即终止,并显示如下消息:
[1] 29116 killed pip
Run Code Online (Sandbox Code Playgroud)
或者
[1] 29141 killed python
Run Code Online (Sandbox Code Playgroud)
Python 和 pip 在 M1 MacBook 原生环境中运行良好。
仅在 virtualenv 中它们不起作用。
经过一番研究,我发现它与“x86_64”和“arm 64”架构有关。为了解决这个问题,你必须在x86_64模式下运行virtualenv python/pip。
脚步:
Utilities > Terminal输入csrutil disable. 参考:禁用和启用系统完整性保护arch -x86_64 $SHELL。之后,我再次启用SIP并继续arch -x86_64 $SHELL每次使用。它将成功执行 virtualenv 中的 python/pip 。
为了节省时间,我在 .zshrc 中添加了一个别名:
别名 x86="arch -x86_64 $SHELL"
现在,如果我需要在 x86_64 模式下执行某些进程,我只需键入x86即可打开 x86_64 shell。
注意:github上的MxJ24提供了这个解决方案,并列出了一些python/django/brew有用的脚本:https://gist.github.com/MxJ24/e1386c9012f533cfbedfed5114da3e60
截至目前,Python 2 virtualenv 还无法在配备 Apple Silicon 芯片的 Mac 上运行。有关更多信息,请参阅https://github.com/pypa/virtualenv/issues/2024 。
涉及禁用系统完整性保护和使用 x86_64 模拟的解决方法可能不安全且效率低下,我建议不要这样做遵循它们。
最好的解决方案显然是切换/迁移/升级到Python 3,为此 virtualenv 的工作就像一个魅力。
如果这不是一个可行的选择,那么我会考虑使用Docker 而不是 virtualenv。python:2Docker 镜像具有最新的 Python 2.7.18 版本,并且可在 aarch64 架构上使用,因此无需 x86_64 模拟即可运行。我不知道你的用例,但我使用的是 IntelliJ IDEA/PyCharm,它支持使用 Docker 作为 SDK,所以在一次性设置后它是无缝的。
| 归档时间: |
|
| 查看次数: |
7676 次 |
| 最近记录: |