Возможно ли потребовать PyQt из setuptools setup.py?

Я создаю небольшое приложение, которое использует PyQt и hardt, было бы неплохо объявить эту зависимость в setup.py.

Однако, согласно этот блог (впервые попал в google для pyqt setuptools) говорит, что это невозможно, а последний абзац здесь не пытается это сделать.

Идеи? Возможно, мне нужно перейти на PySide, который находится на PyPi?

Update:

Очевидный install_requires = [ 'pyqt >= 0.7' ] в setup.py дает мне:

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')

Ответы

Ответ 1

В то время как принятый ответ был изначально правильным Python Wheels теперь предоставляет средства для установки пакетов расширения C, таких как PyQt5, без необходимости компиляции из источника.

В настоящее время PyPi имеет файлы .whl для PyQt5 на Python3 для нескольких платформ, включая MacOS X, Linux (любой), Win32 и Win64. Например, это результат, когда pip-установка PyQt5 на Python3 на Mac:

[email protected] ~ $ 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

Если вы нацеливаетесь на Python3 + PyQt5, тогда у вас не должно возникнуть проблемы с параметром PyQt5 в качестве нормальной зависимости в setup.py.

Ответ 2

Правильно, пакеты PyQT не используют distutils/setup.py для его установки, поэтому они не могут быть установлены с помощью easy_install или pip. Вам необходимо загрузить и установить его вручную.

Это также означает, что вы не должны помещать его в свои метаданные requires, так как easy_install и pip затем попытаются установить его и выполнить сбой.

Я не знаю, хорош ли PySide, но также не имеет setup.py, а также отказывается устанавливать с помощью easy_install/pip, поэтому неплохой вариант.:)

Другим вариантом является переупаковка PyQt с distutils, но это может быть большой проблемой.

Ответ 3

Пока вы можете pip install pyqt5 благодаря теперь доступным колесам (как предложено @mfitzp), от setup.py через install_requires это не требуется. Причина в том, что setuptools не знает, как установить колеса, которые pip умеет, а PyQT5 доступен только как колеса на PyPI (нет дистрибутива источника, т.е. Файла tar.gz). См. Этот email и что отчет об ошибках.

Ответ 4

Setuptools> = 38.2.0 теперь знает, как установить колеса. Таким образом, тривиальный ответ - установить последнюю версию setuptools и потребовать, чтобы ваша просвещенная пользовательская база сделала то же самое. Чтобы принудительно использовать setuptools> = 38.2.0 во время установки, см. Этот соответствующий ответ в другом месте.

Поскольку setuptools 38.2.0 был выпущен более года назад, все предыдущие ответы на этот вопрос ужасающе устарели, явно ошибочны и менее чем полезны.