Problema PyQGIS para encontrar o caminho do script Python

Sep 30 2020

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

1 LuisPerez Sep 30 2020 at 04:06

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.