Por que não consigo importar meu script do console python?

9

Eu estou trabalhando com o console python qgis. Normalmente, armazeno todos os meus scripts python em ~ / Scripts / python. Configurei o PYTHONPATH como ~ / Scripts / python no meu .bashrc. No entanto, não consigo importar meus sripts do console dentro do QGIS.

Aqui está o meu erro quando tento importar um script chamado 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

Como faço para configurar o PYTHONPATH para pygis?

Renaud
fonte
11
Tente adicionar ~/Scripts/pythonao PATH que normalmente funciona para mim. Verifique comimport os; os.path
Nathan W

Respostas:

11

No console do Python, execute o seguinte:

import sys
sys.path

Veja se sua entrada PYTHONPATH está listada. Acho que não, pois essa variável de ambiente provavelmente não está disponível para o Python em execução do QGIS.

Para adicionar sua pasta de scripts ao sys.path do console, faça um append regular ():

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

Então você deve poder importar seus módulos de lá para essa sessão do console. Eu recomendo expandir o ~ para o caminho inicial completo do usuário (não tenho certeza se o Python faz ~ expansão).

EDIT : ~ expansão não parece ser suportada pelo sys.path (no Mac, pelo menos).

O console Python do QGIS é criado por um módulo Python, 'console.py'. Portanto, se você deseja adicionar seu caminho personalizado ao sys.path de uma maneira mais permanente, edite o arquivo console.py e adicione a instrução sys.path.append ('path / to / my / scripts') após o módulo seção de importações.

O console.py está localizado aqui (para Mac, usando o pacote QGIS KyngChaos.com ):

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

Obviamente, este é um hack que será apagado e precisará ser refeito em uma atualização do QGIS.app.

Qualquer ajuste no sys.path do interpretador QGIS Python em execução também está disponível para outros plugins.

Uma alternativa mais segura pode ser criar um plug-in PyQGIS de desenvolvimento simples que carrega e apenas executa o sys.path.append (), sempre que você desejar. Ele também pode remover esse caminho do sys.path no plugin unload (). Não testei se o ajuste sys.path de um plug-in estaria disponível em um console já carregado (suponho que sim).

dakcarto
fonte
Seu Hack está funcionando bem para mim até agora. Obrigado muito much.On Ubuntu 12.04, o arquivo está localizado na /usr/share/pyshared/qgis/console.py
Renaud
Excelente! A propósito, eu precisava reiniciar meu QGIS no Windows 7 para tornar o console Python ciente do caminho anexado.
Dirk