尝试导入包时出现错误消息

error message when trying to import a package

我尝试导入 QGIS 应用程序随附的名为 "processing" 的包。在 QGIS 中的 Python 控制台中导入该包是没有问题的。我也设法找到了它:

>>>import processing
>>>processing.__file__
'C:/PROGRA~1/QGISES~1/apps/qgis/./python/plugins\processing\__init__.py'

但我的目标是在 QGIS 应用程序 运行 之外的独立 Python 脚本中导入该包。我找到了一个例子,根据我试过的例子(仅限代码摘要):

sys.path.append('C:\Program files\QGIS Essen\apps\qgis\python\plugins\processing')
from processing.core.Processing import Processing
Processing.initialize()
import Processing

存在子目录 \processing\core,并且该目录中还有 Processing.py 文件。一切似乎都还好。

print sys.path 给我(以及其他许多人):

['C:\Program files\QGIS Essen\apps\qgis\python\plugins\processing']

但是当我 运行 我的脚本时,我收到一条错误消息告诉我:

ImportError: No module named processing.core.Processing

为什么找不到那个包或模块?可能是调用语法或路径错误?

您进入的目录太深了。 from processing.core.Processing import Processing 将导致 python 在 sys.path 目录中寻找名为 "processing" 的东西,即 "'C:\Program files\QGIS Essen\apps\qgis\python\plugins\processing\processing".

改为

sys.path.append('C:\Program files\QGIS Essen\apps\qgis\python\plugins')

请注意,这将使 plugins 中的所有模块可见。

您可以尝试在此处发布此问题:https://gis.stackexchange.com/

是的,您需要所有路径。为了帮助您 "whack a mole phase" 尝试从这里开始: http://docs.qgis.org/2.8/en/docs/pyqgis_developer_cookbook/intro.html#run-python-code-when-qgis-starts

他们在 OS 中设置路径 -vs- 在 Python 中设置路径。不过应该是一样的。

FWIW 我尝试通过路径添加工作并最终寻找出现在 "C:\Program Files (x86)\QGIS Essen\apps\qgis\python\qgis__init__.py" 第 36 行中的 QgsFeature 和 QgsGeometry 的导入。这些没有在按文件名或内容搜索时弹出,所以我可以找不到下一个要添加的路径...也许必须安装另一个模块?

我的过程是得到错误,然后在文件名和内容中搜索无法导入的对象。找到文件后,您就有了目录和路径。继续努力吧。

如果有帮助,这是我目前为路径添加的内容:

sys.path.append('C:\Program Files (x86)\QGIS Essen\apps\qgis\python\plugins')
sys.path.append('C:\Program Files (x86)\QGIS Essen\apps\qgis\python')
sys.path.append('C:\Program Files (x86)\QGIS Essen\apps\python27\lib\site-packages')
sys.path.append('C:\Program Files (x86)\QGIS Essen\apps\qgis\python\qgis\core')
sys.path.append('C:\Program Files (x86)\QGIS Essen\apps\qgis\python\qgis\gui')
sys.path.append('C:\Program Files (x86)\QGIS Essen\apps\qgis\bin')

抱歉,我无法提供更多帮助。