【问题标题】:how to build universal2 python on M1 mac using pyenv?如何使用 pyenv 在 M1 mac 上构建 universal2 python?
【发布时间】:2022-12-29 11:37:06
【问题描述】:

我正在尝试使用 pyenv 在 M1 Mac 上构建和安装 universal2 (arm64+intel) python 3.10;我正在运行 MacOS Monterey 12.3.1。 (我需要它来使用 pyinstaller 来创建 universal2 版本。)

我试过 env MACOSX_DEPLOYMENT_TARGET=10.9 CONFIGURE_OPTS="--enable-shared --enable-universalsdk --with-universal=archs=universal2" pyenv install 3.10.3 我认为这是正确的方法,但我收到此错误:

  File "/private/var/folders/41/gktcdg9x6d38d7jhzg09nwsh0000gn/T/python-build.20220509131706.57223/Python-3.10.2/Lib/ensurepip/__init__.py", line 193, in _bootstrap
    return _run_pip([*args, *_PACKAGE_NAMES], additional_paths)
  File "/private/var/folders/41/gktcdg9x6d38d7jhzg09nwsh0000gn/T/python-build.20220509131706.57223/Python-3.10.2/Lib/ensurepip/__init__.py", line 93, in _run_pip
    return subprocess.run([sys.executable, '-W', 'ignore::DeprecationWarning',
  File "/private/var/folders/41/gktcdg9x6d38d7jhzg09nwsh0000gn/T/python-build.20220509131706.57223/Python-3.10.2/Lib/subprocess.py", line 524, in run
    raise CalledProcessError(retcode, process.args,
subprocess.CalledProcessError: Command '['/private/var/folders/41/gktcdg9x6d38d7jhzg09nwsh0000gn/T/python-build.20220509131706.57223/Python-3.10.2/python.exe', '-W', 'ignore::DeprecationWarning', '-c', '\nimport runpy\nimport sys\nsys.path = [\'/var/folders/41/gktcdg9x6d38d7jhzg09nwsh0000gn/T/tmpifyf93mk/setuptools-58.1.0-py3-none-any.whl\', \'/var/folders/41/gktcdg9x6d38d7jhzg09nwsh0000gn/T/tmpifyf93mk/pip-21.2.4-py3-none-any.whl\'] + sys.path\nsys.argv[1:] = [\'install\', \'--no-cache-dir\', \'--no-index\', \'--find-links\', \'/var/folders/41/gktcdg9x6d38d7jhzg09nwsh0000gn/T/tmpifyf93mk\', \'--root\', \'/\', \'--upgrade\', \'setuptools\', \'pip\']\nrunpy.run_module("pip", run_name="__main__", alter_sys=True)\n']' died with <Signals.SIGABRT: 6>.

我也尝试了各种 3.9 版本,结果相同。

我正在使用自制软件 pyenv,我的 brew/opt/homebrew,所以是基于 M1 的。

有没有办法使用 pyenv 在 M1 机器上获得通用的 arm/intel python?

【问题讨论】:

  • 花了几天时间,无法从 pyenvhomebrew 获得完全通用的构建。我能找到的最佳解决方案是使用来自 python.org/downloads 的二进制分发版
  • 有这方面的消息吗?我也更喜欢使用 pyenv 管理我所有的 python 版本......

标签: python macos pyinstaller pyenv


【解决方案1】:

env MACOSX_DEPLOYMENT_TARGET=10.9 CONFIGURE_OPTS="--enable-shared --enable-universalsdk --with-universal=archs=universal2" pyenv install 3.10.3

是,你说得对。我也有同样的问题,基于ARM版本的brew,我们不能设置--enable-universalsdk --with-universal=archs=universal2。 看起来像是 ARM64 & x86 brew 依赖问题。

也许你可以尝试x86版本的brew,请参考link

【讨论】: