¿Es posible requerir PyQt de setuptools setup.py?

Estoy creando una aplicación pequeña que usa PyQt y pensé que sería bueno declarar esa dependencia en setup.py.

Sin embargo, según este blog (primer hit en google para pyqt setuptools) dice que no se puede hacer, y el último párrafo aquí tampoco intenta hacerlo.

Ideas? Tal vez debería cambiar a PySide que está en PyPi ?

Actualizar:

El obvio install_requires = [ 'pyqt >= 0.7' ] en setup.py me da:

 D:\3rd\BuildBotIcon\my-buildboticon\python>setup.py test running test install_dir . Checking .pth file support in . C:\Python26-32\pythonw.exe -E -c pass Searching for pyqt>=4.7 Reading http://pypi.python.org/simple/pyqt/ Reading http://www.riverbankcomputing.com/software/pyqt/ Reading http://www.riverbankcomputing.com/software/pyqt/download No local packages or download links found for pyqt>=4.7 error: Could not find suitable distribution for Requirement.parse('pyqt>=4.7') 

Si bien la respuesta aceptada originalmente era correcta, Python Wheels ahora proporciona un medio para instalar paquetes de extensión C como PyQt5 sin la necesidad de comstackr desde la fuente.

PyPi actualmente tiene archivos .whl para PyQt5 en Python3 para múltiples plataformas, incluyendo MacOS X, Linux (cualquiera), Win32 y Win64 . Por ejemplo, esta es la salida cuando se instala PyQt5 en Python3 en una Mac:

 mfitzp@MacBook-Air ~ $ pip3 install pyqt5 Collecting pyqt5 Downloading PyQt5-5.6-cp35-cp35m-macosx_10_6_intel.whl (73.2MB) 100% |████████████████████████████████| 73.2MB 2.5kB/s Collecting sip (from pyqt5) Downloading sip-4.18-cp35-cp35m-macosx_10_6_intel.whl (46kB) 100% |████████████████████████████████| 49kB 1.8MB/s Installing collected packages: sip, pyqt5 Successfully installed pyqt5-5.6 sip-4.18 

Si está apuntando a Python3 + PyQt5, entonces no debería tener problemas para especificar PyQt5 como una dependencia normal en setup.py .

Correcto, los paquetes de PyQT no usan distutils / setup.py para su instalación, por lo que no se pueden instalar con easy_install o pip. Necesitas descargarlo e instalarlo manualmente.

Eso también significa que no debe ponerlo en sus metadatos, ya que easy_install y pip intentarán instalarlo y fallarán.

No sé si PySide es bueno, pero tampoco tiene setup.py, y también se niega a instalar con easy_install / pip, así que no es una buena opción. 🙂

Otra opción es volver a empaquetar PyQt con distutils, pero eso puede ser mucho trabajo.

Si bien puede pip install pyqt5 ahora disponible (como sugiere @mfitzp), no se puede solicitar desde setup.py través de install_requires . La razón es que setuptools no sabe cómo instalar ruedas que pip sabe, y PyQT5 solo está disponible como ruedas en PyPI (no hay distribución de origen, es decir, no hay archivo tar.gz ). Ver este correo electrónico y ese informe de error para más detalles.

Setuptools> = 38.2.0 ahora sabe cómo instalar ruedas. La respuesta trivial, por lo tanto, es instalar una versión reciente de setuptools y requerir que su base de usuarios iluminada también lo haga. Para imponer el uso de setuptools> = 38.2.0 en el momento de la instalación, vea esta respuesta relevante en otro lugar .

Desde que se lanzó setuptools 38.2.0 hace más de un año, todas las respuestas anteriores a esta pregunta son horriblemente obsoletas, descaradamente incorrectas y poco útiles. En el lado positivo, esto demuestra acertadamente por qué la mera existencia de respuestas aceptadas en StackOverflow es un anti-patrón de UX .