Python/pip 进程在 virtualenv 中被杀死(Apple M1 芯片)
Python/pip process are killed in virtualenv (Apple M1 chip)
当我在 MacBook M1 芯片 virtualenv 中执行 pip 或 python 时,进程总是立即终止并显示如下消息:
[1] 29116 killed pip
或
[1] 29141 killed python
Python 和 M1 MacBook 原生环境中的 pip 运行 没问题。
只有在 virtualenv 中它们不起作用。
经过一番研究,我发现它与“x86_64”和“arm 64”架构有关。要解决这个问题,你必须 运行 virtualenv python/pip in x86_64 mode.
步骤:
- 禁用 SIP:在恢复模式下重新启动 MacBook。打开
Utilities > Terminal
输入 csrutil disable
。参考:Disabling and Enabling System Integrity Protection
- 运行 SHELL as x86_64 mode: 在终端中输入
arch -x86_64 $SHELL
。
- 执行python/pip成功
之后,我再次启用 SIP,每次都继续使用 arch -x86_64 $SHELL
。它将在virtualenv中成功执行python/pip。
为了节省我的时间,我在 .zshrc 中添加了一个别名:
alias x86="arch -x86_64 $SHELL"
现在,如果我需要在 x86_64 模式下执行某些进程,我只需键入 x86
即可打开 x86_64 shell.
注意:github 上的 MxJ24 提供了此解决方案并列出了一些对 python/django/brew 有用的脚本:https://gist.github.com/MxJ24/e1386c9012f533cfbedfed5114da3e60
Python 2 virtualenvs 目前无法在使用 Apple Silicon 芯片的 Mac 上运行。有关详细信息,请参阅 https://github.com/pypa/virtualenv/issues/2024。
涉及禁用系统完整性保护和使用 x86_64 模拟的解决方法可能不安全且效率低下,我建议 反对 以下他们。
最好的解决方案显然是 switch/migrate/upgrade 到 Python 3,virtualenv 就像一个魅力。
如果这不是一个可行的选择,那么我会考虑使用 Docker 而不是 virtualenv。 python:2
Docker 图像具有最新的 Python 2.7.18 版本并且可在 aarch64 架构上使用,因此它将 运行 没有 x86_64 仿真。我不知道你的用例,但我正在使用 IntelliJ IDEA/PyCharm 并且它支持使用 Docker 作为 SDK,所以在一次性设置之后它是无缝的。
当我在 MacBook M1 芯片 virtualenv 中执行 pip 或 python 时,进程总是立即终止并显示如下消息:
[1] 29116 killed pip
或
[1] 29141 killed python
Python 和 M1 MacBook 原生环境中的 pip 运行 没问题。
只有在 virtualenv 中它们不起作用。
经过一番研究,我发现它与“x86_64”和“arm 64”架构有关。要解决这个问题,你必须 运行 virtualenv python/pip in x86_64 mode.
步骤:
- 禁用 SIP:在恢复模式下重新启动 MacBook。打开
Utilities > Terminal
输入csrutil disable
。参考:Disabling and Enabling System Integrity Protection - 运行 SHELL as x86_64 mode: 在终端中输入
arch -x86_64 $SHELL
。 - 执行python/pip成功
之后,我再次启用 SIP,每次都继续使用 arch -x86_64 $SHELL
。它将在virtualenv中成功执行python/pip。
为了节省我的时间,我在 .zshrc 中添加了一个别名:
alias x86="arch -x86_64 $SHELL"
现在,如果我需要在 x86_64 模式下执行某些进程,我只需键入 x86
即可打开 x86_64 shell.
注意:github 上的 MxJ24 提供了此解决方案并列出了一些对 python/django/brew 有用的脚本:https://gist.github.com/MxJ24/e1386c9012f533cfbedfed5114da3e60
Python 2 virtualenvs 目前无法在使用 Apple Silicon 芯片的 Mac 上运行。有关详细信息,请参阅 https://github.com/pypa/virtualenv/issues/2024。
涉及禁用系统完整性保护和使用 x86_64 模拟的解决方法可能不安全且效率低下,我建议 反对 以下他们。
最好的解决方案显然是 switch/migrate/upgrade 到 Python 3,virtualenv 就像一个魅力。
如果这不是一个可行的选择,那么我会考虑使用 Docker 而不是 virtualenv。 python:2
Docker 图像具有最新的 Python 2.7.18 版本并且可在 aarch64 架构上使用,因此它将 运行 没有 x86_64 仿真。我不知道你的用例,但我正在使用 IntelliJ IDEA/PyCharm 并且它支持使用 Docker 作为 SDK,所以在一次性设置之后它是无缝的。