首页 > 解决方案 > Python/pip 进程在 virtualenv 中被杀死(Apple M1 芯片)

问题描述

当我在 MacBook M1 芯片 virtualenv 中执行 pip 或 python 时,进程总是立即终止,并显示如下消息:

[1]    29116 killed     pip

或者

[1]    29141 killed     python

M1 MacBook 原生环境中的 Python 和 pip 运行良好。

仅在 virtualenv 中它们不起作用。

标签: pythonmacospipvirtualenvapple-m1

解决方案


经过一番研究,我发现它与“x86_64”和“arm 64”架构有关。要解决这个问题,你必须在 x86_64 模式下运行 virtualenv python/pip。

脚步:

  1. 禁用 SIP:在恢复模式下重新启动 MacBook。打开Utilities > Terminal进入csrutil disable。ref:禁用和启用系统完整性保护
  2. 以 x86_64 模式运行 SHELLarch -x86_64 $SHELL在终端中输入。
  3. 成功执行python/pip

之后,我再次启用 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


推荐阅读