如何在 ARM MacOS 机器上使用 Rosetta2 运行 Python 作为 X86

How to run Python as X86 with Rosetta2 on ARM MacOS machine

我有一个 python 应用程序,其下游依赖于仅作为 X86 可用的动态库。

应用程序 运行 在 X86 MacOS 机器上运行,但在 ARM MacOS 机器上失败并显示 ImportError.

我 运行 lipo -archs 图书馆,但只有 x86_64。我在 virtualenv 中有 Python 运行ning,它是一个通用二进制文件 x86_64 arm64。应用程序在安装时构建的中间目标文件也是一个通用二进制x86_64 arm64.

我怀疑 Python 作为 ARM 应用程序是本机的 运行,但由于依赖关系,我需要它 运行 作为 X86 应用程序。

我可以使用 MacOS 或 Rosetta2 选项或环境设置来强制执行 X86 Python 二进制文件而不是 ARM 二进制文件吗?

看起来唯一的方法是安装 X86 版本的 python。

我在这里找到了指南 - https://towardsdatascience.com/how-to-use-manage-multiple-python-versions-on-an-apple-silicon-m1-mac-d69ee6ed0250

但无法使 pyenv 构建部分正常工作。

所以在 Rosetta i386 终端中我安装了 brew86 python。这将 python 的 X86 版本放入 /usr/local/bin/python3,我可以从中创建一个仅限 X86 的 virtualenv。

大体上步骤来自上述 link(减去 pyenv 部分):

  1. 安装 Rosetta
  2. 创建 Rosetta 终端
  3. 在 Rosetta 终端中安装 X86 自制程序
  4. /usr/local/bin/brew
  5. 中为 X86 自制程序创建一个别名
  6. 使用 X86 brew 安装 X86 python(最终 /usr/local/bin/python3
  7. 根据X86python路径创建virtualenv
  8. pip 安装