Problema di PyQGIS per trovare il percorso dello script Python

Sep 30 2020

Ho due script Python. Lo script principale importa il secondo script

test_credenziali.py (script principale)

#!/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'

Salvo entrambi gli script nella stessa cartella (ad es. Sul desktop) C:\Users\assis\Desktop\script_test

e se utilizzo la seguente riga prima dell'importazione delle credenziali.py funziona

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

Tuttavia mi piace usare il percorso relativo per chiamare lo script credenziali.py . Usando python normalmente funziona oppure posso usare il comando

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

per ottenere il percorso dello script principale.

Utilizzando la console QGIS Python non funziona.

Risposte

1 LuisPerez Sep 30 2020 at 04:06

Quello che credo è, (potrei sbagliarmi) che questo accada perché quando esegui un plugin gli script vengono compilati e i file creati, con estensione .pyc vengono salvati nella cartella py_cache del tuo plugin.

Ma Python dovrebbe essere un linguaggio interpretato? Sì, ma quando importi un modulo, in questo caso os, quel modulo viene compilato nel file .pyc.

Nella console suppongo che il file non sia accessibile o sia temporaneo.

Speriamo che un guru ci dia informazioni migliori.