Problema PyQGIS para encontrar o caminho do script Python
Eu tenho dois scripts Python. O script principal importa o segundo script
test_credenziali.py (script principal)
#!/usr/bin/env python
# coding=utf-8
# Copyleft Roberto Marzocchi - Gter srl Innovazione in Geomatica Gnss e Gis
import os,sys,shutil,re,glob, getopt
dirname0 =os.path.dirname(sys.argv[0])
#dirname = os.path.dirname(os.path.realpath(__file__)) #NameError: name '__file__' is not defined
dirname2= os.getcwd()
print('The path of the python script is ', dirname0 )
#print('The path of the python script is ', dirname )
print('The path of the python script is ', dirname2 )
# here i like to use the dirname variable
sys.path.insert(0, r'C:\Users\assis\Desktop\script_test')
from credenziali import *
print(host)
credenziali.py
host='domain.it'
Eu salvo os dois scripts na mesma pasta (por exemplo, na minha área de trabalho) C:\Users\assis\Desktop\script_test
e se eu usar a seguinte linha antes da importação de credenziali.py , funciona
sys.path.insert(0, r'C:\Users\assis\Desktop\script_test')
No entanto, gosto de usar o caminho relativo para chamar o script credenziali.py . Usando python normalmente funciona ou posso usar o comando
dirname = os.path.dirname(os.path.realpath(__file__))
para obter o caminho do script principal.
Usando o console QGIS Python ele não funciona.
Respostas
O que eu acredito é, (posso estar errado) que isso acontece porque quando você executa um plugin os scripts são compilados e os arquivos criados, com extensão .pyc são salvos na pasta py_cache do seu plugin.
Mas Python deveria ser uma linguagem interpretada? Sim, mas quando você importa um módulo, neste caso os, esse módulo é compilado no arquivo .pyc.
No console, suponho que esse arquivo não esteja acessível ou seja temporário.
Esperemos que um guru nos forneça melhores informações.