[PYTHON] Das vom Modulnamen abgedeckte Material kann am Importziel / der Importquelle nicht korrekt aufgerufen werden.

Überblick über die Aufgabe

Reproduktion

Modulkonfiguration und Inhalt

Verfassung

$ find . -type f
./test1/bin/test.py
./test1/conf/__init__.py
./test1/conf/test_settings.py
./submodule/__init__.py
./submodule/conf/__init__.py
./submodule/conf/submodule_settings.py
./submodule/submodule_test.py

Python-Inhalt des Anrufers

$ cat ./test1/bin/test.py
# -*- coding: utf-8 -*-
import sys
import os

base_dir = os.path.dirname(__file__) + "/.."
sys.path.append( base_dir )
from conf import test_settings
#import conf.test_settings

sys.path.append(base_dir + "/../submodule")
import submodule_test

Inhalt des Submoduls

$ cat ./submodule/submodule_test.py
# -*- coding: utf-8 -*-
import sys
import os

#Testen Sie Ihr Verzeichnis, auch wenn Sie versuchen, Ihr Verzeichnis mit Vorrang zu durchsuchen.Ich gehe, um Pys Conf zu lesen
sys.path.insert(0, os.path.dirname(__file__))
print sys.path
import conf.submodule_settings

Lösung

1. Rufen Sie das Submodul von einer Ebene darüber auf

$ cat ./submodule/submodule_test.py
# -*- coding: utf-8 -*-
import sys
import os

#In der Importquelle sollte kein Modulname für das Submodul vorhanden sein, damit Sie es korrekt aufrufen können.
sys.path.insert(0, os.path.dirname(__file__) + "/../")
print sys.path
import submodule.conf.submodule_settings

Hmm. Sie können es lesen, aber Sie müssen den Namen des Moduls festlegen. Es scheint einen besseren Weg zu geben, aber ich weiß es nicht.

2. Verwenden Sie ConfigParser

Ich möchte die Konfiguration für eine andere Datei des Submoduls lesen, daher schien es mir möglich, dieses Problem nur mit ConfigParser zu beseitigen.

Recommended Posts

Das vom Modulnamen abgedeckte Material kann am Importziel / der Importquelle nicht korrekt aufgerufen werden.
Überprüfen Sie den Dateinamen, wenn Sie durch Python-Import nicht informiert werden
Die von OpenCV ausgegebene AVI-Datei kann nicht abgespielt werden