PyQGIS-Problem beim Finden des Pfads des Python-Skripts

Sep 30 2020

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

1 LuisPerez Sep 30 2020 at 04:06

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.