Pourquoi ne puis-je pas importer mon script depuis la console python?


9

je travaille avec la console qgis python. Je stocke généralement tous mes scripts python dans ~ / Scripts / python J'ai défini le PYTHONPATH sur ~ / Scripts / python dans mon .bashrc Cependant, je ne parviens pas à importer mes sripts depuis la console dans QGIS.

Voici mon erreur lorsque j'essaie d'importer un script appelé 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

Comment configurer le PYTHONPATH pour pygis?


1
Essayez d'ajouter ~/Scripts/pythonà PATH qui fonctionne normalement pour moi. Vérifiez avecimport os; os.path
Nathan W

Réponses:


11

Dans la console Python, exécutez ce qui suit:

import sys
sys.path

Vérifiez si votre entrée PYTHONPATH est répertoriée. Je suppose que non, car cette variable d'environnement n'est probablement pas disponible pour Python exécutant QGIS.

Pour ajouter votre dossier de scripts au sys.path de la console, faites un ajout régulier ():

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

Vous devriez alors pouvoir importer vos modules à partir de là pour cette session de console. Je recommande d'étendre le ~ au chemin de retour complet de votre utilisateur (je ne sais pas si Python fait ~ l'expansion).

EDIT : ~ l'expansion ne semble pas être prise en charge par sys.path (sur Mac, au moins).

La console Python de QGIS est créée par un module Python, 'console.py'. Donc, si vous souhaitez ajouter votre chemin personnalisé à son sys.path de manière plus permanente, modifiez le fichier console.py et ajoutez l'instruction sys.path.append ('path / to / my / scripts') après le module section des importations.

console.py se trouve ici (pour Mac, en utilisant le package KyngChaos.com QGIS ):

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

Bien sûr, il s'agit d'un hack qui sera effacé et devra être refait lors d'une mise à jour de QGIS.app.

Tout ajustement du sys.path de l'interpréteur QGIS Python en cours d'exécution est également disponible pour d'autres plugins.

Une alternative plus sûre pourrait être de créer un plugin PyQGIS de développement simple qui charge et fait simplement sys.path.append (), quand vous le souhaitez. Il pourrait également supprimer ce chemin de sys.path lors du déchargement du plugin (). Je n'ai pas testé si l'ajustement sys.path d'un tel plugin serait disponible dans une console déjà chargée (je suppose que ce le serait.)


Votre Hack fonctionne bien pour moi jusqu'à présent. Merci beaucoup. Sur Ubuntu 12.04, le fichier se trouve à /usr/share/pyshared/qgis/console.py
Renaud

Excellent! Soit dit en passant, je devais redémarrer mon QGIS sur Windows 7 pour que la console Python soit consciente du chemin d'accès ajouté.
Dirk
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.