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

时间:2016-03-13 22:05:48

标签: python import package

我尝试导入随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

的模块

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

2 个答案:

答案 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')

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