¿Por qué no puedo importar mi script desde la consola de Python?

9

Estoy trabajando con la consola qgis python. Por lo general, almaceno todos mis scripts de Python en ~ / Scripts / python. He configurado PYTHONPATH en ~ / Scripts / python en mi .bashrc. Sin embargo, no puedo importar mis sripts desde la consola dentro de QGIS.

Aquí está mi error cuando intento importar un script llamado 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

¿Cómo configuro el PYTHONPATH para pygis?

Renaud
fuente
1
Intenta agregar ~/Scripts/pythona PATH que normalmente funciona para mí. Compruébalo conimport os; os.path
Nathan W

Respuestas:

11

En la consola de Python ejecute lo siguiente:

import sys
sys.path

Vea si su entrada PYTHONPATH está en la lista. Supongo que no, ya que esa variable de entorno probablemente no esté disponible para la ejecución de Python de QGIS.

Para agregar su carpeta de scripts al sys.path de la consola, haga un append regular ():

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

Entonces debería poder importar sus módulos desde allí para esa sesión de consola. Recomiendo expandir el ~ a la ruta de inicio completa de su usuario (no estoy seguro si Python hace ~ expansión).

EDITAR : ~ expansión no parece ser compatible con sys.path (al menos en Mac).

La consola Python de QGIS es creada por un módulo Python, 'console.py'. Entonces, si desea agregar su ruta personalizada a su sys.path de una manera más permanente, edite el archivo console.py y agregue la instrucción sys.path.append ('ruta / a / mi / scripts') después del módulo sección de importaciones.

console.py se encuentra aquí (para Mac, utilizando el paquete QGIS KyngChaos.com ):

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

Por supuesto, este es un truco que se borrará y tendrá que rehacerse en una actualización de QGIS.app.

Cualquier ajuste al sys.path del intérprete de QGIS Python en ejecución también está disponible para otros complementos.

Una alternativa más segura podría ser crear un complemento PyQGIS de desarrollo simple que cargue y simplemente haga sys.path.append (), siempre que lo desee. También podría eliminar esa ruta de sys.path en el complemento unload (). No he probado si el ajuste sys.path de dicho complemento estaría disponible en una consola ya cargada (supongo que lo estaría).

dakcarto
fuente
Tu truco está funcionando bien para mí hasta ahora. Muchas gracias. En ubuntu 12.04, el archivo se encuentra en /usr/share/pyshared/qgis/console.py
Renaud
¡Excelente! Por cierto, necesitaba reiniciar mi QGIS en Windows 7 para que la consola Python conociera la ruta adjunta.
Dirk