首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >只在PyCharm的编辑器中缺少qgis.core模块中的类

只在PyCharm的编辑器中缺少qgis.core模块中的类
EN

Stack Overflow用户
提问于 2020-06-27 13:43:41
回答 2查看 424关注 0票数 0

我想使用Windows10上的PyCharm Community 2020.1.2 x64作为编写QGIS的IDE。我需要基于旧版本的QGIS2.18,所以我需要python2.7,qt4,以及QGIS2.18的核心模块。我从官方网站下载了QGIS 2.18。它提供了将python环境用作.bat脚本的准备,它设置了所有所需的python路径。因此,我使用path D:\Program Files\QGIS 2.18\bin\python-qgis-ltr.bat为我的项目设置主python解释器。

在此之后,我可以在PyCharm中运行python控制台,导入所有的QGIS模块,以及QgsFeature、QgsVectorLayer等QGIS标准集合中的任何类。一切都很好,直到我试图以from qgis.core import QgsFeature的形式从.py文件中的PyCharm编辑器导入这个类。在编辑器中,PyCharm可以看到包qgis.core,我可以导入它,但是PyCharm在模块中的代码完成只看到保存在D:\Program Files\QGIS 2.18\apps\qgis-ltr\python\qgis\core\__init__.py (例如QgsEditError类)中的类,但是所有标准的QgsEditError类都在红色上下划线。

运行在完全相同的解释器上的Python可以看到与PyCharm中的“外部库”选项卡中可见的相同的源代码,因此命令:

  • qgis.core.__path__返回['D:\\Program Files\\QGIS 2.18\\apps\\qgis-ltr\\python\\qgis\\core']
  • qgis.core.__file__返回'D:\\Program Files\\QGIS 2.18\\apps\\qgis-ltr\\python\\qgis\\core\\__init__.pyc
  • dir(qgis.core)返回QGIS标准核心类的完整列表。

如果我运行.py脚本,其中PyCharm的代码验证器以红色下划线显示不正确的导入对象,脚本将被执行而不会出现任何错误,并且我可以轻松地打印导入的QgsFeature对象。为什么我的PyCharm编辑器看到了qgis.core模块的不同内容,然后控制台也在同一个解释器上运行呢?

EN

回答 2

Stack Overflow用户

发布于 2020-06-28 22:24:36

请允许我对自己有资格。一段时间前,我对计算机方面的冒险和探索失去了兴趣。我赢了一些大战役,也输了一些。我浪费了很多时间本来可以过得更好。现在,我只需要等一段合理的时间才能升级任何东西,等一段时间后才能下载最新的东西,并且尽量避免尝试做一些常规路径之外的事情。

所以你的帖子让我好奇,我四处看了看。我发现很少有关于使用PyCharm构建QGIS的信息。这很大程度上告诉了我我想知道的一切:在构建QGIS插件时,PyCharm并不常见。

但是有关用python构建QGIS插件的信息非常少。这里甚至有一个QGIS教程&关于这个主题的提示。QGIS建议使用framework,并进一步说QGIS本身是使用Qt框架编写的。“对于插件开发,我们使用一个名为Qt的应用程序。”

如果你克服了目前的困境,我想听听你是如何做到的。

关于它的价值,这里有到QGIS教程和提示的链接。

https://www.qgistutorials.com/en/docs/building_a_python_plugin.html

票数 0
EN

Stack Overflow用户

发布于 2020-07-03 20:08:07

最后,问题自行解决了。构建C++库的二进制框架是有问题的,每次启动应用程序时,PyCharm都会这样做。我的PyCharm不想这么做,我在其他库(例如Qt)中发现了许多类似的问题,人们都在努力解决。两天后,我的PyCharm修复了自己,并为我的QGIS库创建了所有所需的二进制框架。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62610799

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档