【问题标题】:Pycharm, PyQt5, and Python 2.7 -- No code completionPycharm、PyQt5 和 Python 2.7——没有代码完成
【发布时间】:2015-03-28 03:49:50
【问题描述】:

我有:

  • Python 2.7 (Anaconda x64),效果很好
  • PyQt5(使用pip install python-qt5安装)
  • PyCharm 4.04 Professional(最近从 3.4.1 升级)
  • 一个小的Qt 应用程序

费了一番周折(因为Riverbank 没有为 Python 2.7 提供 PyQt5 二进制文件,只为 3.3+ 提供)我得到了一切工作,这要归功于Marcus Otosson's 预编译的二进制包。

Qt 现在已安装并且功能齐全。我的Qt 应用程序运行良好!

但应用程序尚未完成,并且 PyCharm 不会为 PyQt 模块完成代码完成。它甚至不会识别任何 PyQt5 子模块(如 Qwidgets)的存在:即使它们工作得很好,我仍然会收到红色波浪形 "Unresolved Reference" 警告。

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

卸载并重新安装 PyCharm 没有帮助。重新配置解释器也没有强制骨架生成器再次运行。

在我秃顶之前请帮忙。

【问题讨论】:

  • 您也可以直接联系 JetBrains:intellij-support.jetbrains.com/home
  • 好主意——我刚刚发布了一个支持请求。 StackOverflow 往往速度更快,而且通常与官方渠道一样有用。
  • 这对我在 WINdows x64 上有效。我也是跑专业的。 “Qt 现在已安装并且功能齐全。”所以你已经从命令行测试过了?
  • 我已经通过 Anaconda 为 python2.7 安装了 pyqt5(conda install pyqt==5.6.0)。我有同样的问题,但简单的 pycharm 重启解决了它。如果这不起作用“文件->使缓存无效/重新启动”可能。

标签: python pyqt pycharm code-completion pyqt5


【解决方案1】:

你能从你项目的外部库中找到 PyQt5 吗? 如果通过 pip 安装,应该可以直接看到库。一旦可以引用该库,它将为您完成代码。

【讨论】:

  • 是的,我可以。 PyQt4 和 PyQt5 都安装在 `C:\Anaconda\Lib\site-packages` 中,并且可以从 PyCharm 中查看。有趣的是:我以为它会“正常工作”,但事实并非如此。这些文件夹中也有一堆 Qt 标记的 *.dll 和 *.pyd 可用。但是 PyCharm 的自动完成功能无法识别它们。
  • 旁注:PyQt4/5 不会使用 pip 安装。它们不使用 setup.py 文件,也不托管在 Pypi.org 上。您必须从 Riverbankcomputing 安装二进制包(包括 Qt5 DLL 文件)
【解决方案2】:

我在带有 PyQt4 的 Windows 上使用 PyCharm4(community Edititon),自动完成功能很好。由于 PyQt4 实际上是一个由 py​​thon 解释器动态加载的动态库(您可以查看 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。 “从 PyQt5 导入 Qt”不会引发未解决的参考警告,所以如果我用所有 PyQt5 存根填充这个文件夹,也许自动完成会起作用?你有 PyQt5 骨架的工作安装,你可以扔到 pastebin 上吗?
  • 如果我删除了完成文件夹"/Users/mac/Library/Caches/PyCharm40/python_stubs/348993582,对于我的PC,我不确定是否还有其他设置与您的PC和我的不同/PyQt4”,然后重新启动 PyCharm,打开一个新文件夹,创建一个 python 文件,然后如果我只是输入“from PyQt4.QtCore import QString”,那么 Pycham 将尝试为所有库创建索引(这可能需要一段时间) ,完成后,PyQt4的所有.py文件都会自动下载到python_stubs文件夹中。
  • 几乎成功了。我的 PyQt5 骨架文件夹位于“D:\Users\mmerrifield\.PyCharm40\system\python_stubs\-946255732\PyQt5”中。当我删除它并重新启动 pycharm 时,它会构建一个不完整的骨架。唯一可用的文件是“init.py”和“Qt”。对于它的价值(在我的情况下很少),PyQt4 骨架生成得很好。
  • 所以 PyQt4 现在可以工作,但 PyQt5 不行。知道为什么吗?
  • 我还没用过 PyQt5,所以我不知道为什么它不适用于 PyQt5。但是在pycharm设置中注意到,有file-》setting-》python外部文档,只有pyQt4文档存在,那么尝试添加一个类似的PyQt5文档url并重启pycharm,看看效果如何?
【解决方案3】:

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

import PyQt5.QtWidgets

from PyQt5 import QtWidgets

【讨论】:

    猜你喜欢
    • 2012-03-12
    • 2011-05-15
    • 2014-08-26
    • 1970-01-01
    • 1970-01-01
    • 2014-07-14
    • 2016-03-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多