You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Mac M1环境下Pipenv安装PyQt5失败问题求助

在Mac M1的Pipenv环境中安装PyQt5失败的解决方法

问题背景

在Mac M1设备的Pipenv虚拟环境中尝试安装PyQt5及pyqt5-sip,先后使用两种依赖配置:

  • 方案1:无版本限制的依赖声明
  • 方案2:指定pyqt5-sip==12.7.0和不存在的pyqt5==5.10.1

尝试pipenv install、pipenv install --skip-lock、pipenv install pyqt5三种命令均安装失败,具体错误如下:

依赖配置方案

方案1配置

[packages]
pyqt5-sip = "*"
pyqt5 = "*"

方案2配置

[packages]
pyqt5-sip = "==12.7.0"
pyqt5 = "==5.10.1" # 该版本不存在

各命令错误信息

pipenv install 错误

Pipfile.lock (7d18ff) 已过期,正在更新为 (bb5ccf)...
正在锁定[packages]依赖...
正在构建依赖需求...
✘ 锁定失败!

ERROR:pip.subprocessor:[present-rich] 准备元数据(pyproject.toml)失败,退出码1
[ResolutionFailure]:   文件 "/opt/homebrew/Cellar/pipenv/2022.9.21/libexec/lib/python3.10/site-packages/pipenv/resolver.py", 行782, in _main
[ResolutionFailure]:       resolve_packages(
[ResolutionFailure]:   文件 "/opt/homebrew/Cellar/pipenv/2022.9.21/libexec/lib/python3.10/site-packages/pipenv/resolver.py", 行730, in resolve_packages
[ResolutionFailure]:       results, resolver = resolve(
[ResolutionFailure]:   文件 "/opt/homebrew/Cellar/pipenv/2022.9.21/libexec/lib/python3.10/site-packages/pipenv/resolver.py", 行709, in resolve
[ResolutionFailure]:       return resolve_deps(
[ResolutionFailure]:   文件 "/opt/homebrew/Cellar/pipenv/2022.9.21/libexec/lib/python3.10/site-packages/pipenv/utils/resolver.py", 行1105, in resolve_deps
[ResolutionFailure]:       results, hashes, markers_lookup, resolver, skipped = actually_resolve_deps(
[ResolutionFailure]:   文件 "/opt/homebrew/Cellar/pipenv/2022.9.21/libexec/lib/python3.10/site-packages/pipenv/utils/resolver.py", 行894, in actually_resolve_deps
[ResolutionFailure]:       resolver.resolve()
[ResolutionFailure]:   文件 "/opt/homebrew/Cellar/pipenv/2022.9.21/libexec/lib/python3.10/site-packages/pipenv/utils/resolver.py", 行689, in resolve
[ResolutionFailure]:       raise ResolutionFailure(message=str(e))
[pipenv.exceptions.ResolutionFailure]: 警告:无法解析依赖,可能存在子依赖版本不匹配。
  可使用 $ pipenv install --skip-lock 绕过锁定机制,再运行 $ pipenv graph 检查依赖情况。
  提示:如果是预发布依赖,尝试 $ pipenv lock --pre。
ERROR: 元数据生成失败

pipenv install --skip-lock 错误

正在从Pipfile安装依赖...
安装pyqt5-sip时出错!将重试。
安装pyqt5时出错!将重试。
正在安装初始失败的依赖...
部分依赖安装失败,以下依赖安装失败且已尝试重试:
[Requirement(_name='pyqt5-sip', vcs=None, req=NamedRequirement(name='pyqt5-sip', version='', req=Requirement.parse('pyqt5-sip'), extras=[], editable=False, _parsed_line=<Line (editable=False, name=pyqt5-sip, path=None, uri=None, extras=(), markers=None, vcs=None, specifier=None, pyproject=None, pyproject_requires=None, pyproject_backend=None, ireq=pyqt5-sip)>), markers=None, _specifiers='', index=None, editable=False, hashes=frozenset(), extras=(), abstract_dep=None, _line_instance=<Line (editable=False, name=pyqt5-sip, path=None, uri=None, extras=(), markers=None, vcs=None, specifier=None, pyproject=None, pyproject_requires=None, pyproject_backend=None, ireq=pyqt5-sip)>, _ireq=None), Requirement(_name='pyqt5', vcs=None, req=NamedRequirement(name='pyqt5', version='', req=Requirement.parse('pyqt5'), extras=[], editable=False, _parsed_line=<Line (editable=False, name=pyqt5, path=None, uri=None, extras=(), markers=None, vcs=None, specifier=None, pyproject=None, pyproject_requires=None, pyproject_backend=None, ireq=pyqt5)>), markers=None, _specifiers='', index=None, editable=False, hashes=frozenset(), extras=(), abstract_dep=None, _line_instance=<Line (editable=False, name=pyqt5, path=None, uri=None, extras=(), markers=None, vcs=None, specifier=None, pyproject=None, pyproject_requires=None, pyproject_backend=None, ireq=pyqt5)>, _ireq=None)]

pipenv install pyqt5 错误

正在安装pyqt5...
错误:安装pyqt5时出错!
错误详情:收集pyqt5
  使用缓存的PyQt5-5.15.7.tar.gz (3.2 MB)
  正在安装构建依赖:开始
  正在安装构建依赖:完成,状态为'done'
  获取构建wheel的需求:开始
  获取构建wheel的需求:完成,状态为'done'
  准备元数据(pyproject.toml):开始
  准备元数据(pyproject.toml):完成,状态为'error'

  error: subprocess-exited-with-error
  
  × 准备元数据(pyproject.toml)未成功运行。
  │ 退出码:1
  ╰─> [29行输出]
      回溯(最近的调用最后):
        文件 "/opt/homebrew/Cellar/pipenv/2022.9.21/libexec/lib/python3.10/site-packages/pipenv/patched/pip/_vendor/pep517/in_process/_in_process.py", 行156, in prepare_metadata_for_build_wheel
          hook = backend.prepare_metadata_for_build_wheel
      AttributeError: 模块'sipbuild.api'没有属性'prepare_metadata_for_build_wheel'
      
      在处理上述异常期间,发生了另一个异常:
      
      回溯(最近的调用最后):
        文件 "/opt/homebrew/Cellar/pipenv/2022.9.21/libexec/lib/python3.10/site-packages/pipenv/patched/pip/_vendor/pep517/in_process/_in_process.py", 行363, in <module>
          main()
        文件 "/opt/homebrew/Cellar/pipenv/2022.9.21/libexec/lib/python3.10/site-packages/pipenv/patched/pip/_vendor/pep517/in_process/_in_process.py", 行345, in main
          json_out['return_val'] = hook(**hook_input['kwargs'])
        文件 "/opt/homebrew/Cellar/pipenv/2022.9.21/libexec/lib/python3.10/site-packages/pipenv/patched/pip/_vendor/pep517/in_process/_in_process.py", 行160, in prepare_metadata_for_build_wheel
          whl_basename = backend.build_wheel(metadata_directory, config_settings)
        文件 "/private/var/folders/z8/lhf1yvnd1tb1bvq856nr_0240000gn/T/pip-build-env-t831aefc/overlay/lib/python3.9/site-packages/sipbuild/api.py", 行46, in build_wheel
          project = AbstractProject.bootstrap('wheel',
        文件 "/private/var/folders/z8/lhf1yvnd1tb1bvq856nr_0240000gn/T/pip-build-env-t831aefc/overlay/lib/python3.9/site-packages/sipbuild/abstract_project.py", 行87, in bootstrap
          project.setup(pyproject, tool, tool_description)
        文件 "/private/var/folders/z8/lhf1yvnd1tb1bvq856nr_0240000gn/T/pip-build-env-t831aefc/overlay/lib/python3.9/site-packages/sipbuild/project.py", 行585, in setup
          self.apply_user_defaults(tool)
        文件 "project.py", 行69, in apply_user_defaults
          super().apply_user_defaults(tool)
        文件 "/private/var/folders/z8/lhf1yvnd1tb1bvq856nr_0240000gn/T/pip-build-env-t831aefc/overlay/lib/python3.9/site-packages/pyqtbuild/project.py", 行70, in apply_user_defaults
          super().apply_user_defaults(tool)
        文件 "/private/var/folders/z8/lhf1yvnd1tb1bvq856nr_0240000gn/T/pip-build-env-t831aefc/overlay/lib/python3.9/site-packages/sipbuild/project.py", 行236, in apply_user_defaults
          self.builder.apply_user_defaults(tool)
        文件 "/private/var/folders/z8/lhf1yvnd1tb1bvq856nr_0240000gn/T/pip-build-env-t831aefc/overlay/lib/python3.9/site-packages/pyqtbuild/builder.py", 行69, in apply_user_defaults
          raise PyProjectOptionException('qmake',
      sipbuild.pyproject.PyProjectOptionException
      [输出结束]
  
  note: 该错误源自子进程,并非pip本身的问题。
error: metadata-generation-failed

× 生成包元数据时遇到错误。
╰─> 查看上述输出获取详情。

note: 这是上述包的问题,而非pip。
hint: 查看上述详情。
✘ 安装失败

解决步骤

1. 安装Qt依赖(通过Homebrew)

Mac M1上安装PyQt5需要先安装Qt的工具链,直接用Homebrew安装:

brew install qt

2. 设置环境变量

安装完成后,需要让pip找到qmake的路径,运行以下命令(M1上Homebrew默认路径为/opt/homebrew):

export PATH="/opt/homebrew/opt/qt/bin:$PATH"
export LDFLAGS="-L/opt/homebrew/opt/qt/lib"
export CPPFLAGS="-I/opt/homebrew/opt/qt/include"

若需永久生效,可将上述三行添加到~/.zshrc或~/.bash_profile中,再执行source ~/.zshrc(对应你的shell配置文件)。

3. 调整Pipfile的依赖版本

使用支持M1的PyQt5版本(推荐5.15.4及以上,该版本开始提供arm64预编译wheel包),同时指定匹配的pyqt5-sip版本:

[packages]
pyqt5 = ">=5.15.4"
pyqt5-sip = ">=12.9.0"

4. 重新安装依赖

先删除旧虚拟环境(可选,避免残留问题):

pipenv --rm

再重新创建环境并安装依赖:

pipenv install

若仍遇锁定问题,可先跳过锁定再生成lock文件:

pipenv install --skip-lock
pipenv lock --pre

关键原因说明

  • M1为arm64架构,旧版本PyQt5无对应预编译wheel包,需本地编译,而编译依赖Qt的qmake工具,未安装Qt会直接报错。
  • 方案2中指定的pyqt5==5.10.1不存在,且版本远早于支持M1的版本,必然安装失败。
  • sipbuild.api属性错误是编译环境缺失Qt工具链导致的连锁问题,安装Qt后即可解决。

内容的提问来源于stack exchange,提问作者The Dan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 05:31:17