Czy istnieje sposób na import modułów z zależnościami w tym samym katalogu przy użyciu bezwzględnej/względnej ścieżki z "imp"?Jak importować moduły z zależnościami w tej samej bezwzględnej/względnej ścieżce z imp?
Tu następuje strukturę katalogów:
.
├── importFrom
│ ├── dependant.py
│ └── dependence.py
└── test.py
import plików test.py dependant.py używając:
modname=imp.load_source("testImp","importFrom/dependant.py")
co z kolei import dependence.py direcly z:
import dependence
Wywołanie test.py daje
Traceback (most recent call last):
File "test.py", line 3, in <module>
modname=imp.load_source("testImp","importFrom/dependant.py")
File "importFrom/dependant.py", line 1, in <module>
import dependence
ImportError: No module named dependence
Warto mieć opcję load_source, aby dodać ścieżkę do załadowanego modułu do modułu ładującego, aby automatycznie wykryć relatywne zależności. Na razie jedyną alternatywą znalazłem jest dodanie do ścieżki systemowej, wprowadzanie do test.py
EDIT: Znalazłem lepszy sposób to zrobić względną import z drogi, dodał plik, aby uzyskać ścieżka bezwzględna dzwoniącego (niezależność od aktualnego katalogu roboczego)
sys.path.append(os.path.join(os.path.dirname(__file__), 'importFrom'))
import dependant
Używanie tup = imp.find_module ("dependent", ["/ opt/importFrom /", "other"]) imp.load_module ("dependent", tup [0], tup [1], tup [2]) podaje ten sam błąd "Brak zależności od modułu". – a1an
Też myślę, że to nie jest wykonalne z load_source od python 2.7, stąd poprawna odpowiedź jest "niewykonalna", musi użyć podejścia obejścia – a1an