为什么我不能从python控制台导入脚本?


9

我正在使用qgis python控制台。我通常将所有python脚本存储到〜/ Scripts / python中,但确实在.bashrc中将PYTHONPATH设置为〜/ Scripts / python。但是,我无法从QGIS的控制台中导入我的清单。

当我尝试导入名为Create_Figures_2D的脚本时,这是我的错误

import Create_Figures_2D
Traceback (most recent call last):
  File "<input>", line 1, in <module>
  File "/usr/lib/python2.7/dist-packages/qgis/utils.py", line 309, in _import
    mod = _builtin_import(name, globals, locals, fromlist, level)
ImportError: No module named Create_Figures_2D

如何为pygis设置PYTHONPATH?


1
尝试添加~/Scripts/python到通常对我有用的PATH中。进行检查import os; os.path
Nathan W

Answers:


11

在Python控制台中,运行以下命令:

import sys
sys.path

查看是否列出了您的PYTHONPATH条目。我猜不是,因为该环境变量可能不适用于QGIS运行的Python。

要将脚本文件夹添加到控制台的sys.path中,请执行常规的append():

sys.path.append('~/Scripts/python')

然后,您应该能够从那里为该控制台会话导入模块。我建议将〜扩展为用户的完整主目录路径(不确定Python是否可以〜扩展)。

编辑:〜似乎不被sys.path支持(至少在Mac上)。

QGIS的Python控制台由Python模块“ console.py”创建。因此,如果要以更永久的方式将自定义路径添加到其sys.path中,请编辑console.py文件,并在模块后添加sys.path.append('path / to / my / scripts')语句进口部分。

console.py位于此处(对于Mac,使用KyngChaos.com QGIS软件包):

/Applications/QGIS.app/Contents/Resources/python/qgis/console.py

当然,这是一种hack,将被删除,并且必须在QGIS.app更新中重做。

其他插件也可以对运行中的QGIS Python解释器的sys.path进行任何调整。

一种更安全的选择是制作一个简单的,开发性的PyQGIS插件,该插件可以在需要时加载并仅执行sys.path.append()。它还可以从插件unload()上的sys.path中删除该路径。我还没有测试过这样的插件的sys.path调整是否可以在已经加载的控制台中使用(我想是可以的。)


到目前为止,您的Hack对我来说还算不错。非常感谢。在ubuntu 12.04上,该文件位于/usr/share/pyshared/qgis/console.py
Renaud

优秀的!顺便说一下,我需要在Windows 7上重新启动QGIS,以使Python控制台知道附加的路径。
德克2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.