M1 Mac环境下pip安装thriftpy2时wheel构建失败求助
解决M1 Mac上pip安装thriftpy2的wheel构建失败问题
问题描述
执行pip install thriftpy2时出现wheel构建失败,核心错误为:
AssertionError: 将构建带有不支持标签('cp310', 'cp310', 'macosx_11_0_arm64')的wheel
环境信息
CPU: M1(10核64位westmere) Clang: 14.0.0 build 1400 Git: 2.41.0 => /usr/local/bin/git Curl: 7.79.1 => /usr/bin/curl macOS: 12.5.1-x86_64 CLT: 14.2.0.0.1.1668646533 Xcode: 未安装 Rosetta 2: 已启用 Python 3.10.8 Conda 23.5.0
错误详情
为收集到的包构建wheel:thriftpy2 为thriftpy2构建wheel(setup.py)... 错误 error: subprocess-exited-with-error × python setup.py bdist_wheel执行失败。 │ 退出码:1 ╰─> [277行输出] 运行bdist_wheel [wheel]配置段已弃用,请改用[bdist_wheel]。 运行build 运行build_py 创建build目录 创建build/lib.macosx-11.0-arm64-cpython-310 创建build/lib.macosx-11.0-arm64-cpython-310/thriftpy2 复制thriftpy2/server.py -> build/lib.macosx-11.0-arm64-cpython-310/thriftpy2 ...(中间文件复制步骤省略) 运行build_ext 构建'thriftpy2.transport.cybase'扩展 ...(中间编译步骤省略) ld: 警告:-pie被忽略,它仅在链接主可执行文件时使用 ...(其他扩展构建步骤省略) ~/anaconda3/envs/mtbi-python/lib/python3.10/site-packages/setuptools/_distutils/cmd.py:66: SetuptoolsDeprecationWarning: setup.py install已弃用。 !! ******************************************************************************** 请避免直接运行``setup.py``。 请改用pypa/build、pypa/installer或其他基于标准的工具。 详情请见https://blog.ganssle.io/articles/2021/10/setup-py-deprecated.html。 ******************************************************************************** !! self.initialize_options() 安装到build/bdist.macosx-11.0-arm64/wheel 运行install 运行install_lib ...(中间文件复制步骤省略) 运行install_egg_info 复制thriftpy2.egg-info到build/bdist.macosx-11.0-arm64/wheel/thriftpy2-0.4.16-py3.10.egg-info 运行install_scripts 回溯(最近的调用最后): 文件"<string>", 第2行, 在<module>中 文件"<pip-setuptools-caller>", 第34行, 在<module>中 文件"/private/var/folders/rx/2h26x2c17dq3ntcr8g9dl67r0000gn/T/pip-install-hw7ktz0x/thriftpy2_071a76a186d743c88526c39c0fa8cfb9/setup.py", 第76行, 在<module>中 setup(name="thriftpy2", 文件"~/anaconda3/envs/mtbi-python/lib/python3.10/site-packages/setuptools/__init__.py", 第107行, 在setup中 return distutils.core.setup(**attrs) 文件"~/anaconda3/envs/mtbi-python/lib/python3.10/site-packages/setuptools/_distutils/core.py", 第185行, 在setup中 return run_commands(dist) 文件"~/anaconda3/envs/mtbi-python/lib/python3.10/site-packages/setuptools/_distutils/core.py", 第201行, 在run_commands中 dist.run_commands() 文件"~/anaconda3/envs/mtbi-python/lib/python3.10/site-packages/setuptools/_distutils/dist.py", 第969行, 在run_commands中 self.run_command(cmd) 文件"~/anaconda3/envs/mtbi-python/lib/python3.10/site-packages/setuptools/dist.py", 第1244行, 在run_command中 super().run_command(command) 文件"~/anaconda3/envs/mtbi-python/lib/python3.10/site-packages/setuptools/_distutils/dist.py", 第988行, 在run_command中 cmd_obj.run() 文件"~/anaconda3/envs/mtbi-python/lib/python3.10/site-packages/wheel/bdist_wheel.py", 第328行, 在run中 impl_tag, abi_tag, plat_tag = self.get_tag() 文件"~/anaconda3/envs/mtbi-python/lib/python3.10/site-packages/wheel/bdist_wheel.py", 第278行, 在get_tag中 assert tag in supported_tags, "would build wheel with unsupported tag {}".format(tag) AssertionError: 将构建带有不支持标签('cp310', 'cp310', 'macosx_11_0_arm64')的wheel [输出结束] note: 该错误源自子进程,大概率不是pip的问题。 ERROR: 构建thriftpy2的wheel失败 为thriftpy2运行setup.py clean 构建thriftpy2失败 ERROR: 无法为thriftpy2构建wheel,这是安装基于pyproject.toml的项目所必需的。
解决方案
方案1:通过Rosetta 2切换x86_64架构安装
利用已启用的Rosetta 2,强制以x86_64架构运行pip:
arch -x86_64 pip install thriftpy2
如果使用conda环境,先激活目标环境后执行上述命令;或直接创建x86_64架构的conda环境:
conda create -n x86_env python=3.10 conda activate x86_env arch -x86_64 pip install thriftpy2
方案2:指定兼容的wheel平台标签
手动指定适配x86_64的平台标签,绕过自动检测问题:
pip install thriftpy2 --platform macosx_10_9_x86_64 --only-binary=:all:
方案3:升级依赖后重试
先更新pip、setuptools和wheel到最新版本,再尝试安装:
pip install --upgrade pip setuptools wheel pip install thriftpy2
原因说明
thriftpy2官方未提供适配M1芯片arm64架构的预编译wheel包,且其构建脚本在arm64环境下生成的平台标签不被当前wheel版本支持,通过切换x86_64架构或指定兼容标签可解决该问题。
内容的提问来源于stack exchange,提问作者Long.zhao
相关产品推荐
相关产品推荐

