Почему я не могу импортировать свой скрипт из консоли python?

9

я работаю с консолью qgis python. Я обычно храню все свои скрипты Python в ~ / Scripts / python. Я установил PYTHONPATH в ~ / Scripts / python в моем .bashrc. Однако я не могу импортировать свои скрипты из консоли внутри 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

Как мне настроить PYTHONPATH для pygis?

Renaud
источник
1
Попробуйте добавить ~/Scripts/pythonв PATH, который обычно работает для меня. Проверьте это сimport os; os.path
Натан W

Ответы:

11

В консоли Python выполните следующее:

import sys
sys.path

Посмотрите, есть ли ваша запись PYTHONPATH в списке. Я предполагаю, что нет, поскольку эта переменная окружения, вероятно, недоступна для запущенного Python QGIS.

Чтобы добавить вашу папку сценариев в sys.path консоли, выполните обычную функцию append ():

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

Тогда вы сможете импортировать ваши модули оттуда для этого сеанса консоли. Я рекомендую расширить ~ до полного домашнего пути вашего пользователя (не уверен, что Python делает ~ расширение).

РЕДАКТИРОВАТЬ : расширение ~ не поддерживается sys.path (по крайней мере, на Mac).

Консоль Python QGIS создается модулем Python 'console.py'. Поэтому, если вы хотите добавить свой собственный путь к его sys.path более постоянным образом, отредактируйте файл console.py и добавьте оператор sys.path.append ('path / to / my / scripts') после модуля раздел импорта.

Здесь находится console.py (для Mac с использованием пакета QGIS KyngChaos.com ):

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

Конечно, это хак, который будет удален и должен быть переделан при обновлении QGIS.app.

Любая настройка sys.path работающего интерпретатора Python QGIS доступна и для других плагинов.

Более безопасной альтернативой может быть создание простого подключаемого модуля PyQGIS для разработки, который загружает и просто выполняет sys.path.append (), когда вы этого хотите. Он также может удалить этот путь из sys.path в плагине unload (). Я не проверял, будет ли настройка sys.path такого плагина доступной в уже загруженной консоли (думаю, так и будет).

dakcarto
источник
Пока что твой взлом работает нормально. Большое спасибо. На Ubuntu 12.04 файл находится по адресу /usr/share/pyshared/qgis/console.py
Renaud
Отлично! Кстати, мне нужно было перезапустить QGIS в Windows 7, чтобы консоль Python знала о добавленном пути.
Дирк