如何在 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。
但无法使 pyenv 构建部分正常工作。
所以在 Rosetta i386 终端中我安装了 brew86 python。这将 python 的 X86 版本放入 /usr/local/bin/python3
,我可以从中创建一个仅限 X86 的 virtualenv。
大体上步骤来自上述 link(减去 pyenv 部分):
- 安装 Rosetta
- 创建 Rosetta 终端
- 在 Rosetta 终端中安装 X86 自制程序
- 在
/usr/local/bin/brew
中为 X86 自制程序创建一个别名
- 使用 X86 brew 安装 X86 python(最终
/usr/local/bin/python3
)
- 根据X86python路径创建virtualenv
- pip 安装
我有一个 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。
但无法使 pyenv 构建部分正常工作。
所以在 Rosetta i386 终端中我安装了 brew86 python。这将 python 的 X86 版本放入 /usr/local/bin/python3
,我可以从中创建一个仅限 X86 的 virtualenv。
大体上步骤来自上述 link(减去 pyenv 部分):
- 安装 Rosetta
- 创建 Rosetta 终端
- 在 Rosetta 终端中安装 X86 自制程序
- 在
/usr/local/bin/brew
中为 X86 自制程序创建一个别名
- 使用 X86 brew 安装 X86 python(最终
/usr/local/bin/python3
) - 根据X86python路径创建virtualenv
- pip 安装