Why does pyqt6-tools attempt to build from source & fail with an error?

I’m REALLY new to python and am getting an error during a pip install of pyqt6-tools. It says This is an issue with the package mentioned above, not pip.
I have a screen grab of the error output, but no idea who to tell about it.

1 Like

Most likely the package author. A pypi.python.org listing, if one, should have an email address.

You can ask her. Show us all the text of the error.
Please no screen shots. Use the pre-formatted text option </> and cut-n-paste the all the text of the error message.

```
type or paste code here
```

What’s a β€œpypi.python.org listen” ?

(practice2-venv) C:\BCET\virtual-environments\practice2-venv>pip install pyqt6-tools
Collecting pyqt6-tools
  Using cached pyqt6_tools-6.1.0.3.2-py3-none-any.whl (29 kB)
Collecting click
  Using cached click-8.1.3-py3-none-any.whl (96 kB)
Collecting pyqt6==6.1.0
  Using cached PyQt6-6.1.0.tar.gz (946 kB)
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Preparing metadata (pyproject.toml) ... error
  error: subprocess-exited-with-error

  Γ— Preparing metadata (pyproject.toml) did not run successfully.
  β”‚ exit code: 1
  ╰─> [25 lines of output]
      Traceback (most recent call last):
        File "C:\bcet\virtual-environments\practice2-venv\Lib\site-packages\pip\_vendor\pyproject_hooks\_in_process\_in_process.py", line 353, in <module>
          main()
        File "C:\bcet\virtual-environments\practice2-venv\Lib\site-packages\pip\_vendor\pyproject_hooks\_in_process\_in_process.py", line 335, in main
          json_out['return_val'] = hook(**hook_input['kwargs'])
                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "C:\bcet\virtual-environments\practice2-venv\Lib\site-packages\pip\_vendor\pyproject_hooks\_in_process\_in_process.py", line 152, in prepare_metadata_for_build_wheel
          whl_basename = backend.build_wheel(metadata_directory, config_settings)
                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "C:\Users\tmp\AppData\Local\Temp\pip-build-env-mkeskth7\overlay\Lib\site-packages\sipbuild\api.py", line 46, in build_wheel
          project = AbstractProject.bootstrap('wheel',
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "C:\Users\tmp\AppData\Local\Temp\pip-build-env-mkeskth7\overlay\Lib\site-packages\sipbuild\abstract_project.py", line 87, in bootstrap
          project.setup(pyproject, tool, tool_description)
        File "C:\Users\tmp\AppData\Local\Temp\pip-build-env-mkeskth7\overlay\Lib\site-packages\sipbuild\project.py", line 585, in setup
          self.apply_user_defaults(tool)
        File "C:\Users\tmp\AppData\Local\Temp\pip-install-bgha457b\pyqt6_85019ab95aa542f19483b04045998aeb\project.py", line 60, in apply_user_defaults
          super().apply_user_defaults(tool)
        File "C:\Users\tmp\AppData\Local\Temp\pip-build-env-mkeskth7\overlay\Lib\site-packages\pyqtbuild\project.py", line 70, in apply_user_defaults
          super().apply_user_defaults(tool)
        File "C:\Users\tmp\AppData\Local\Temp\pip-build-env-mkeskth7\overlay\Lib\site-packages\sipbuild\project.py", line 236, in apply_user_defaults
          self.builder.apply_user_defaults(tool)
        File "C:\Users\tmp\AppData\Local\Temp\pip-build-env-mkeskth7\overlay\Lib\site-packages\pyqtbuild\builder.py", line 69, in apply_user_defaults
          raise PyProjectOptionException('qmake',
      sipbuild.pyproject.PyProjectOptionException
      [end of output]

  note: This error originates from a subprocess, and is likely not a problem with pip.
error: metadata-generation-failed

Γ— Encountered error while generating package metadata.
╰─> See above for output.

note: This is an issue with the package mentioned above, not pip.
hint: See above for details.

(practice2-venv) C:\BCET\virtual-environments\practice2-venv>
1 Like

Can you copy/paste the text of the full error message (not a screen
shot) and tell us your platform/OS? Also your Python version?

As an example, a test install of pyqt6-tools here produces this:

 leet2*> py3 -m pip install pyqt6-tools
 Collecting pyqt6-tools
   Downloading pyqt6_tools-6.1.0.3.2-py3-none-any.whl (29 kB)
 Collecting click
   Using cached click-8.1.3-py3-none-any.whl (96 kB)
 Collecting pyqt6-tools
   Downloading pyqt6_tools-6.0.3.3.2-py3-none-any.whl (29 kB)
   Downloading pyqt6_tools-6.0.2.3.2-py3-none-any.whl (29 kB)
   Downloading pyqt6_tools-6.0.1.3.2-py3-none-any.whl (29 kB)
 ERROR: Cannot install pyqt6-tools==6.0.1.3.2, pyqt6-tools==6.0.2.3.2, pyqt6-tools==6.0.3.3.2 and pyqt6-tools==6.1.0.3.2 because these package versions have conflicting dependencies.

 The conflict is caused by:
     pyqt6-tools 6.1.0.3.2 depends on pyqt6-plugins<6.1.0.3 and >=6.1.0.2.2
     pyqt6-tools 6.0.3.3.2 depends on pyqt6-plugins<6.0.3.3 and >=6.0.3.2.2
     pyqt6-tools 6.0.2.3.2 depends on pyqt6-plugins<6.0.2.3 and >=6.0.2.2.2
     pyqt6-tools 6.0.1.3.2 depends on pyqt6-plugins<6.0.1.3 and >=6.0.1.2.2

 To fix this you could try to:
 1. loosen the range of package versions you've specified
 2. remove package versions to allow pip attempt to solve the dependency conflict

 ERROR: ResolutionImpossible: for help visit https://pip.pypa.io/en/latest/topics/dependency-resolution/#dealing-with-dependency-conflicts

The above is on a current MacOS with Python 3.10.6.

If you go to the PyPI package package page for pyqt6-tools:

it points to the home page:

you can submit an issue there. But the last commit was in 2021, so I’m
not sure how current things are.

Looking at the issues page:

the top issue looks like yours:

You could add yourself to that issue.

It looks like this started with Python 3.10, so installing Python 3.9
might work for you. Trying a 3.9 install here works for me:

 fleet2*> ~/var/venv/3.9.13-homebrew/bin/python3 -m pip install pyqt6-tools
 Collecting pyqt6-tools
   Using cached pyqt6_tools-6.1.0.3.2-py3-none-any.whl (29 kB)
 Collecting python-dotenv
   Downloading python_dotenv-1.0.0-py3-none-any.whl (19 kB)
 Collecting pyqt6-plugins<6.1.0.3,>=6.1.0.2.2
   Downloading pyqt6_plugins-6.1.0.2.2-cp39-cp39-macosx_10_14_x86_64.whl (66 kB)
      ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 66.6/66.6 kB 677.7 kB/s eta 0:00:00
 Requirement already satisfied: click in /Users/cameron/var/venv/3.9.13-homebrew/lib/python3.9/site-packages (from pyqt6-tools) (8.1.3)
 Collecting pyqt6==6.1.0
   Downloading PyQt6-6.1.0-cp36.cp37.cp38.cp39-abi3-macosx_10_14_intel.whl (5.8 MB)
      ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 5.8/5.8 MB 2.6 MB/s eta 0:00:00
 Collecting PyQt6-sip<14,>=13.1
   Downloading PyQt6_sip-13.4.1-cp39-cp39-macosx_10_9_universal2.whl (131 kB)
      ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 131.1/131.1 kB 1.9 MB/s eta 0:00:00
 Collecting PyQt6-Qt6>=6.1.0
   Downloading PyQt6_Qt6-6.4.3-py3-none-macosx_10_14_x86_64.whl (49.5 MB)
      ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 49.5/49.5 MB 2.4 MB/s eta 0:00:00
 Collecting qt6-tools<6.1.0.2,>=6.1.0.1.2
   Downloading qt6_tools-6.1.0.1.2-py3-none-any.whl (13 kB)
 Collecting click
   Using cached click-7.1.2-py2.py3-none-any.whl (82 kB)
 Collecting qt6-applications<6.1.0.3,>=6.1.0.2.2
   Downloading 
 qt6_applications-6.1.0.2.2-py3-none-macosx_10_14_x86_64.whl (87.0 MB)
      ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 87.0/87.0 MB 2.3 MB/s eta 0:00:00
 Installing collected packages: PyQt6-Qt6, qt6-applications, python-dotenv, PyQt6-sip, click, qt6-tools, pyqt6, pyqt6-plugins, pyqt6-tools
   Attempting uninstall: click
     Found existing installation: click 8.1.3
     Uninstalling click-8.1.3:
       Successfully uninstalled click-8.1.3
 Successfully installed PyQt6-Qt6-6.4.3 PyQt6-sip-13.4.1 click-7.1.2 pyqt6-6.1.0 pyqt6-plugins-6.1.0.2.2 pyqt6-tools-6.1.0.3.2 python-dotenv-1.0.0 qt6-applications-6.1.0.2.2 qt6-tools-6.1.0.1.2

so perhaps using Python 3.9 will also work for you.

Cheers,
Cameron Simpson cs@cskk.id.au

Python 3.11.2
Windows 11 Pro Version 22H2

Right. See if you can install a Python 3.9. Ideally from the MS Store:

but if that doesn’t offer one get an installer from the python.org page.

The last 3.9 release with a full Windows installer is 3.9.13:

it looks like you want the β€œWindows Installer 64-bit” one at the bottom of the list.

Cheers,
Cameron Simpson

To address the literal question in the title, the answer is implied by the snippet of the error message you (helpfully) showed. You say you are getting an error during a pip install of pyqt6-tools, and pip tells you This is an issue with the package mentioned above, not pip.. Therefore, you should of course normally report it to the forums or issue tracker of the package in question (pyqt6-tools), just like pip tells you.

However, based on the output you’ve shown, we can in fact see what the issue is. The pyqt6-tools package appears to be unmaintained, and hard-pins specific PyQt6 versions down to the micro version. As such, it requires installing an outdated version of PyQt6, which in turns comes with a by-now rather obsolete (as it was never widely adopted and missing many Qt5 features) de-facto beta version of Qt6.

The immediate problem is that binary pre-built wheels for that version are only available up to Python 3.9 (you can check the wheel filenames on that version’s files page) so pip tries to build PyQt from source, which is a very tough thing for a normal user, especially on Windowsβ€”you’ll need a bunch of compilers and libraries installed, work through a bunch of tricky problems, etc. To work around this immediate problem, you could either try that (but probably not worth it), or install Python 3.9 instead.

However, even if that’s resolved, the other problem is that still locks you to a relatively old, early version of PyQt6 that a lot if not most other stuff won’t work with. Therefore, you’re stuck in a bad spot that’s not likely to get much better even if you solve this problem. So, the correct place to report this is the issue tracker of that project, but if the author doesn’t respond, then you might want to look at other options for what you need.

I’ve interacted with with the author before and they’ve contributed to the QtPy project that I’m one of the maintainers of, so I’ll ping them with the explanation of what’s going on and see if they can do anything about it.

1 Like

Opened a meta-issue documenting the overall problem and suggesting some solutions:

Also, to note, as mentioned on those issues it appears you can download Qt Designer separately from, e.g., fman.

Thanks to Terry, I was able to find contact info for @altendky and, as you noted, he confirmed that python 3.9 was the last release supported. He also said he is no longer able to maintain the package as he has moved on.
I am grossly ignorant in this area and am not locked in to pygt6-tools. I just tried to download all the β€œlatest versions” of everything to get started on my first GUI project, and assumed I’d need pyqt6-tools to work with pyqt6.
I was after the tools package to get QT Designer to reduce my learning curve.
What collection of versions should I install, i.e., python, pyqt, & tools? Or am I on the wrong track?

As you can see, I don’t even know how to format a message.

Two thoughts.

  1. Ask on the PyQt mailing list how to get Qt Designer. PyQt Info Page
  2. Try installing the Qt developer tools, that i think have designer in them

Thanks Barry. Also, thanks for telling me how to post the text of the error output.

Thanks. Your explanation of the cause of the problem and on pyqt6 was very enlightening to me. =8)

BTW, apparently you can install a Python 3.9 from the Microsft Store. - Cameron

Note he also made a comprehensive public reply to my inquiry here, and it seems like there’s a few potential paths forward, especially if at least a couple community members are willing to come forward and help.

As mentioned above, you could consider downloading it via, e.g. fman or other means.

Depends on what specifically you need to do, but ideally you’d want Python 3.10 or 3.11 and either Qt/bindings 5.15 or 6.4, and whatever tools you prefer working with. Note that you can use an abstraction layer like QtPy (I’m one of the maintainers) to allow you and your users to relatively seamlessly support or switch between Qt5 and Qt6, and PySide2/6 and PyQt5/6.

You might also want to consider developing with Conda, and considering Conda Constructor or Micromamba for deploymentβ€”we’re doing something like that for our next-gen Spyder installers (which itself runs on PyQt/PySide via QtPy).

The problem here is you (or something) seems to be adding spurious extra spaces/indents to the left of your messages; make sure they are flush left. I fixed it for you again.