C'è un modo per importare i moduli con dipendenze all'interno della stessa directory usando un percorso assoluto/relativo con "imp"?Come importare i moduli con dipendenze nello stesso percorso assoluto/relativo con imp?
di seguito riportata la struttura delle directory:
.
├── importFrom
│ ├── dependant.py
│ └── dependence.py
└── test.py
importazioni di file test.py dependant.py utilizzando:
modname=imp.load_source("testImp","importFrom/dependant.py")
che a sua volta le importazioni dependence.py direcly con:
import dependence
La chiamata a test.py restituisce
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
Può essere utile avere load_source aggiungere il percorso al modulo caricato nel caricatore in modo che trovi automaticamente le relative dipendenze. Per ora l'unica alternativa che ho trovato è l'aggiunta al percorso di sistema, mettendo in test.py
Edit: ho trovato un modo migliore per fare l'importazione relativa con il percorso, ha aggiunto il file per ottenere il percorso assoluto del chiamante (indipendenza dalla directory di lavoro corrente)
sys.path.append(os.path.join(os.path.dirname(__file__), 'importFrom'))
import dependant
utilizzando tup = imp.find_module ("dipendente", ["/ opt/importFrom /", "altro"]) imp.load_module ("dipendente", tup [0], tup [1], tup [2]) riporta lo stesso errore "Nessun modulo denominato dipendenza". – a1an
Penso anche che non sia fattibile con load_source a partire da python 2.7, quindi la risposta corretta è "non fattibile", bisogna usare un approccio di workaround – a1an