Vấn đề PyQGIS để tìm đường dẫn của tập lệnh Python

Sep 30 2020

Tôi có hai tập lệnh Python. Tập lệnh chính nhập tập lệnh thứ hai

test_credenziali.py (tập lệnh chính)

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

Tôi lưu cả hai tập lệnh trong cùng một thư mục (ví dụ: trên màn hình của tôi) C:\Users\assis\Desktop\script_test

và nếu tôi sử dụng dòng sau trước khi nhập credenziali.py thì nó hoạt động

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

Tuy nhiên, tôi muốn sử dụng đường dẫn tương đối để gọi tập lệnh credenziali.py . Sử dụng python bình thường nó hoạt động hoặc tôi có thể sử dụng lệnh

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

để lấy đường dẫn của tập lệnh chính.

Sử dụng bảng điều khiển Python QGIS nó không hoạt động.

Trả lời

1 LuisPerez Sep 30 2020 at 04:06

Điều tôi tin là, (tôi có thể sai) điều này xảy ra bởi vì khi bạn chạy một plugin, các tập lệnh được biên dịch và các tệp được tạo, với phần mở rộng .pyc được lưu trong thư mục py_cache của plugin của bạn.

Nhưng liệu Python có phải là một ngôn ngữ thông dịch không? Có, nhưng khi bạn nhập một mô-đun, trong trường hợp này là os, mô-đun đó được biên dịch trong tệp .pyc.

Trong bảng điều khiển, tôi cho rằng tệp đó không thể truy cập được hoặc là tệp tạm thời.

Hãy hy vọng một guru cung cấp cho chúng tôi thông tin tốt hơn.