Problema de PyQGIS para encontrar la ruta del script de Python

Sep 30 2020

Tengo dos scripts de Python. El script principal importa el segundo script

test_credenziali.py (secuencia de comandos 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'

Guardo ambos guiones en la misma carpeta (por ejemplo, en mi escritorio) C:\Users\assis\Desktop\script_test

y si uso la siguiente línea antes de la importación de credenziali.py , funciona

sys.path.insert(0, r'C:\Users\assis\Desktop\script_test')

Sin embargo, me gusta usar la ruta relativa para llamar al script credenziali.py . Usando Python normalmente funciona o puedo usar el comando

dirname = os.path.dirname(os.path.realpath(__file__))

para obtener la ruta del script principal.

Usar la consola Python de QGIS no funciona.

Respuestas

1 LuisPerez Sep 30 2020 at 04:06

Lo que creo es (puedo estar equivocado) que esto sucede porque cuando ejecuta un complemento, los scripts se compilan y los archivos creados, con la extensión .pyc, se guardan en la carpeta py_cache de su complemento.

Pero, ¿se supone que Python es un lenguaje interpretado? Sí, pero cuando importa un módulo, en este caso os, ese módulo se compila en el archivo .pyc.

En la consola supongo que ese archivo no es accesible o es temporal.

Esperemos que un gurú nos brinde una mejor información.