我尝试导入随QGIS Application一起提供的名为“processing”的包。在QGIS中的Python控制台中导入该包是没有问题的。我也找到了它:
>>>import processing
>>>processing.__file__
'C:/PROGRA~1/QGISES~1/apps/qgis/./python/plugins\\processing\\__init__.py'
但我的目标是在一个独立的Python脚本中导入该软件包,该脚本在外部 QGIS App上运行。我找到了一个例子,根据我尝试的例子(仅代码摘要):
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:没有名为processing.core.Processing
的模块
为什么找不到该包或模块?可能是调用语法或路径中的错误?
答案 0 :(得分:2)
你的目录太深了。 from processing.core.Processing import Processing
将导致python在sys.path
目录中查找称为“处理”的内容,即"'C:\\Program files\\QGIS Essen\\apps\\qgis\\python\\plugins\\processing\\processing"
。
取而代之的是
sys.path.append('C:\\Program files\\QGIS Essen\\apps\\qgis\\python\\plugins')
请注意,这会使plugins
中的所有模块都可见。
答案 1 :(得分:0)
您可以尝试在此处发布此问题:https://gis.stackexchange.com/
是的,你需要所有的路径。为了帮助你“打破痣阶段”,请尝试从这里开始: http://docs.qgis.org/2.8/en/docs/pyqgis_developer_cookbook/intro.html#run-python-code-when-qgis-starts
他们在OS -vs中设置路径 - 在Python中设置它们。虽然应该是一样的。
FWIW我尝试通过添加路径并最终查找QgsFeature和QgsGeometry的导入,这些导入显示在“C:\ Program Files(x86)\ QGIS Essen \ apps \ qgis \ python \ qgis__init __。py”第36行。这些没有按文件名或内容搜索弹出,所以我找不到要添加的下一个路径......可能还需要安装另一个模块吗?
我的过程是获取错误,然后搜索无法在文件名中导入的对象&内容。找到文件后,您将拥有目录,从而获得路径。只是一直在努力。
如果它有帮助,这是我到目前为止为路径添加的内容:
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')
抱歉,我无法提供更多帮助。