Pycharm,PyQt5和Python 2.7 - 无代码补全

7

我有以下内容:

  • Python 2.7 (Anaconda x64),正常运行
  • PyQt5(使用pip install python-qt5安装)
  • PyCharm 4.04专业版(最近从3.4.1升级)
  • 一个小的Qt应用程序

经过多次折腾(因为Riverbank没有为Python 2.7提供PyQt5二进制文件,只提供了3.3+的版本),感谢Marcus Otosson的预编译二进制包,现在一切都运行良好。

Qt现已安装并完全可用。我的Qt应用程序运行得很好!

但是应用程序还没有完成,PyCharm无法对PyQt模块进行代码完成。它甚至不会识别任何PyQt5子模块(如Qwidgets)的存在:即使它们可以正常工作,我仍然会收到红色波浪线的"Unresolved Reference"警告。

我该怎么解决这个问题?我认为这与生成二进制*.pyd文件的骨架存在固有的困难有关。它到底是如何工作的?我可以手动生成代码骨架,或者从某个可以正确生成它们的地方导入吗?

卸载和重新安装PyCharm没有帮助。重新配置解释器以强制运行骨架生成器也不起作用。

在我的头发掉光之前,请帮帮我。


您也可以直接联系JetBrains:https://intellij-support.jetbrains.com/home - Trilarion
好主意--我刚刚发布了一个支持请求。StackOverflow往往更快,并且通常与官方渠道一样有帮助。 - Matt Merrifield
这在我的 Windows x64 上有效。我也在运行专业版。"Qt 现在已安装并完全可用。" 那么你已经从命令行测试过了吗? - IronManMark20
我已经通过Anaconda为Python2.7安装了pyqt5(conda install pyqt==5.6.0)。我也遇到了同样的问题,但是简单重启PyCharm解决了它。 如果这不起作用,“文件->无效缓存/重新启动”可能会有所帮助。 - hardsetting
3个回答

1
你能否在项目的“外部库”中找到PyQt5? 如果你通过pip安装它,你应该能够直接看到这个库。一旦库被引用,它将为你完成代码自动补全。

可以的。PyQt4和PyQt5都安装在C:\Anaconda\Lib\site-packages\中,并且可以从PyCharm中查看。有趣的是:我曾经以为它会“自动工作”,但实际上并没有。这些文件夹中还有一堆标记为Qt的*.dll和*.pyd文件可用。但是,PyCharm的自动完成无法识别它们。 - Matt Merrifield
附注:PyQt4/5无法使用pip安装。它们不使用setup.py文件,并且不托管在Pypi.org上。您必须从riverbankcomputing安装二进制包(其中包括Qt5 DLL文件)。 - Matt Merrifield

1
我在Windows上使用PyCharm4(社区版)和PyQt4,自动完成功能良好。实际上,PyQt4是由Python解释器动态加载的动态库(您可以查看PyQt4文件夹,除了一些init.py外,那里没有Python文件),自动完成取决于PyQt4本身的源代码,因此在使用PyCharm时,它通常会生成一些本地Python缓存以供完成。对于我的计算机,一个典型的文件路径看起来像这样: C:\Users\cui.PyCharm40\system\python_stubs-762174762\PyQt4\QtCore\QString.py
您也可以尝试从Pycharm安装PyQt文档。 文件->设置->工具->Python外部文档->PyQt

进展了!我在python_stubs中有一个PyQt5文件夹,但里面只有两个文件:init.py和Qt.py。 "from PyQt5 import Qt"没有引发未解决的引用警告,所以如果我将此文件夹填充满所有PyQt5存根,也许自动完成就会起作用?你有一个可用的PyQt5骨架安装可以放在pastebin上吗? - Matt Merrifield
我不确定你的电脑和我的是否有其他设置不同,对于我的电脑来说,如果我删除了完成文件夹"/Users/mac/Library/Caches/PyCharm40/python_stubs/348993582/PyQt4",然后重新启动PyCharm,打开一个新文件夹,创建一个Python文件,然后如果我只输入"from PyQt4.QtCore import QString",那么Pycham将尝试为所有库创建索引(这可能需要一段时间),完成后,所有PyQt4的.py文件都将自动下载到python_stubs文件夹中。 - Cui Heng
1
几乎成功了。我的PyQt5骨架文件夹位于“D:\Users\mmerrifield.PyCharm40\system\python_stubs-946255732\PyQt5”。当我删除它并重新启动pycharm时,它会构建一个不完整的骨架。唯一可用的文件是“init.py”和“Qt”。就我个人而言,生成的PyQt4骨架很好用。 - Matt Merrifield
PyQt4现在可以工作,但PyQt5不行。有任何想法为什么? - Matt Merrifield
我还没有使用过PyQt5,所以无法确定为什么它对PyQt5不起作用。但是在PyCharm设置中注意到,有一个文件 -》设置-》Python外部文档,只有pyQt4文档存在,那么尝试添加类似的PyQt5文档URL并重新启动PyCharm,看看是否可以工作? - Cui Heng
实际上,没有什么文档可言。只有一个类列表,每个类只链接到C++文档。别误会:这是有用的信息,因为Python方法与C++方法一一映射,但它不够接近或以标准格式呈现,因此PyCharm无法解析。 - Matt Merrifield

1

我在PyCharm 2017.1.1中也遇到了同样的问题。不要这样做:

import PyQt5.QtWidgets


from PyQt5 import QtWidgets

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接