Проблема PyQGIS для поиска пути к скрипту Python

Sep 30 2020

У меня есть два скрипта Python. Основной скрипт импортирует второй скрипт

test_credenziali.py (основной скрипт)

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

Я сохраняю оба сценария в одной папке (например, на своем рабочем столе) C:\Users\assis\Desktop\script_test

и если я использую следующую строку перед импортом credenziali.py, она работает

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

Тем не менее мне нравится использовать относительный путь для вызова скрипта credenziali.py . Обычно при использовании python он работает, или я могу использовать команду

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

чтобы получить путь к основному скрипту.

Используя консоль QGIS Python, это не работает.

Ответы

1 LuisPerez Sep 30 2020 at 04:06

Я считаю (я могу ошибаться), что это происходит из-за того, что при запуске плагина скрипты компилируются, а созданные файлы с расширением .pyc сохраняются в папке py_cache вашего плагина.

Но должен ли Python быть интерпретируемым языком? Да, но когда вы импортируете модуль, в данном случае os, этот модуль компилируется в файл .pyc.

В консоли я предполагаю, что файл недоступен или временный.

Будем надеяться, что гуру предоставит нам лучшую информацию.