Problème PyQGIS pour trouver le chemin du script Python
J'ai deux scripts Python. Le script principal importe le second 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'
J'enregistre les deux scripts dans le même dossier (par exemple sur mon bureau) C:\Users\assis\Desktop\script_test
et si j'utilise la ligne suivante avant l'importation de credenziali.py cela fonctionne
sys.path.insert(0, r'C:\Users\assis\Desktop\script_test')
Néanmoins j'aime utiliser le chemin relatif pour appeler le script credenziali.py . En utilisant python normalement, cela fonctionne ou je peux utiliser la commande
dirname = os.path.dirname(os.path.realpath(__file__))
pour obtenir le chemin du script principal.
En utilisant la console QGIS Python, cela ne fonctionne pas.
Réponses
Ce que je crois, c'est (je me trompe peut-être) que cela se produit parce que lorsque vous exécutez un plugin, les scripts sont compilés et les fichiers créés, avec l'extension .pyc sont enregistrés dans le dossier py_cache de votre plugin.
Mais Python est-il censé être un langage interprété? Oui, mais lorsque vous importez un module, dans ce cas os, ce module est compilé dans le fichier .pyc.
Dans la console, je suppose que ce fichier n'est pas accessible ou est temporaire.
Espérons qu'un gourou nous donne de meilleures informations.