PyQGIS-Problem beim Finden des Pfads des Python-Skripts
Ich habe zwei Python-Skripte. Das Hauptskript importiert das zweite Skript
test_credenziali.py (Hauptskript)
#!/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'
Ich speichere beide Skripte im selben Ordner (z. B. auf meinem Desktop). C:\Users\assis\Desktop\script_test
und wenn ich vor dem Import von credenziali.py die folgende Zeile verwende, funktioniert es
sys.path.insert(0, r'C:\Users\assis\Desktop\script_test')
Trotzdem verwende ich gerne den relativen Pfad, um das Skript credenziali.py aufzurufen . Mit Python funktioniert es normalerweise oder ich kann den Befehl verwenden
dirname = os.path.dirname(os.path.realpath(__file__))
um den Pfad des Hauptskripts zu erhalten.
Mit der QGIS Python-Konsole funktioniert es nicht.
Antworten
Was ich glaube ist (ich kann mich irren), dass dies passiert, weil beim Ausführen eines Plugins die Skripte kompiliert und die Dateien mit der Erweiterung .pyc im Ordner py_cache Ihres Plugins gespeichert werden.
Aber soll Python eine interpretierte Sprache sein? Ja, aber wenn Sie ein Modul importieren, in diesem Fall os, wird dieses Modul in der .pyc-Datei kompiliert.
In der Konsole ist die Datei vermutlich nicht zugänglich oder nur vorübergehend.
Hoffen wir, dass ein Guru uns bessere Informationen gibt.