я работаю с консолью 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?
~/Scripts/python
в PATH, который обычно работает для меня. Проверьте это сimport os; os.path
Ответы:
В консоли Python выполните следующее:
Посмотрите, есть ли ваша запись PYTHONPATH в списке. Я предполагаю, что нет, поскольку эта переменная окружения, вероятно, недоступна для запущенного Python QGIS.
Чтобы добавить вашу папку сценариев в sys.path консоли, выполните обычную функцию append ():
Тогда вы сможете импортировать ваши модули оттуда для этого сеанса консоли. Я рекомендую расширить ~ до полного домашнего пути вашего пользователя (не уверен, что 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 ):
Конечно, это хак, который будет удален и должен быть переделан при обновлении QGIS.app.
Любая настройка sys.path работающего интерпретатора Python QGIS доступна и для других плагинов.
Более безопасной альтернативой может быть создание простого подключаемого модуля PyQGIS для разработки, который загружает и просто выполняет sys.path.append (), когда вы этого хотите. Он также может удалить этот путь из sys.path в плагине unload (). Я не проверял, будет ли настройка sys.path такого плагина доступной в уже загруженной консоли (думаю, так и будет).
источник