【问题标题】:Is it possible to require PyQt from setuptools setup.py?是否可以从 setuptools setup.py 要求 PyQt?
【发布时间】:2011-06-05 10:30:55
【问题描述】:

我正在构建一个使用 PyQt 的小型应用程序,并且认为在 setup.py 中声明该依赖项会很好。

然而,根据this blog(第一次点击谷歌的pyqt setuptools)说它不能完成,最后一段here也没有尝试这样做。

想法?也许我应该切换到PyPi 上的PySide

更新:

setup.py 中明显的 install_requires = [ 'pyqt >= 0.7' ] 给了我:

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

【问题讨论】:

  • @singularity:那个页面没有用,setup.py 没有任何可下载的东西可以在那里使用,或者在链接到的页面中
  • 有人知道 Python 3 和 PyQt 5 是否仍然如此吗?

标签: python pyqt setuptools distutils


【解决方案1】:

Setuptools >= 38.2.0 现在知道如何安装轮子了。 因此,简单的答案是安装最新版本的 setuptools 并要求您开明的用户群也这样做。要在安装时强制使用 setuptools >= 38.2.0,请参阅 this relevant answer elsewhere

自从一年多前发布 setuptools 38.2.0 以来,之前对这个问题的所有答案都已经过时了,明显错误,而且用处不大。

【讨论】:

    【解决方案2】:

    虽然您可以 pip install pyqt5 多亏了现在可用的轮子(正如 @mfitzp 所建议的那样),但不能通过 install_requiressetup.py 要求它。原因是 setuptools 不知道如何安装 pip 知道如何安装的轮子,并且 PyQT5 只能作为 PyPI 上的轮子使用(没有源分发,即没有 tar.gz 文件)。有关详细信息,请参阅此 emailbug report

    【讨论】:

      【解决方案3】:

      虽然接受的答案最初是正确的 Python Wheels 现在提供了一种安装 C 扩展包(例如 PyQt5)的方法,而无需从源代码编译。

      PyPi 目前在 Python3 上为多个平台的 PyQt5 提供了 .whl 文件,包括 MacOS X, Linux (any), Win32 and Win64。例如,这是在 Mac 上的 Python3 上 pip 安装 PyQt5 时的输出:

      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
      

      如果您的目标是 Python3+PyQt5,那么在 setup.py 中将 PyQt5 指定为正常依赖项应该没有问题。

      【讨论】:

        【解决方案4】:

        是的,PyQT 软件包没有使用 distutils / setup.py 进行安装,因此无法使用 easy_install 或 pip 进行安装。您需要手动下载并安装它。

        这也意味着你应该把它放在你的 requires 元数据中,因为 easy_install 和 pip 然后会尝试安装它并失败。

        不知道PySide好不好用,而且还没有setup.py,而且还拒绝用easy_install/pip安装,所以不是一个好选择。 :)

        另一种选择是使用 distutils 重新打包 PyQt,但这可能需要大量工作。

        【讨论】:

        • 您好,由于这是前一段时间,我想再次确认同样的事情。 PyQt4 在 PyPi 上仍然不可用吗?
        • @gravetii:现在好像可以使用了:pypi.python.org/pypi/PyQt4/4.10.3
        • @dotancohen:不,它仍然只是一个带有元数据的页面,没有可下载的。
        • 太糟糕了,为什么 python 包不使用 setuptools ?
        • 你的意思是 distutils。设置工具是可选的。而且您必须询问开发人员。
        猜你喜欢
        • 2015-08-01
        • 2013-09-11
        • 2015-04-15
        • 1970-01-01
        • 2015-03-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多