Sto sperimentando con Python, principalmente la risoluzione dei problemi del codice di altre persone. Sto cercando di far funzionare un programma, "path\folderA\program.py
".Impossibile importare Python da un'altra cartella
Sono in esecuzione il programma da path\folderA
sto ottenendo un errore:
ImportError: No module named fff.ggg.ppp
program.py contiene un import:
from fff.ggg.ppp import mmm
Nella cartella "percorso \ folderB" ci sono: "path\folderB\fff\__init__.py
" "path\folderB\fff\ggg
"
cartella ggg
contiene anche __init__.py
, così come programma ppp.py
dalla lettura di altri posti, come Python error "ImportError: No module named" ho capito che avere il __init__.py
fa una cartella di un "pacchetto" che rende le importazioni dalla possibile - ma doesn' lavoro, dal momento che sto ricevendo un errore.
Questo ha funzionato per altre persone che hanno lavorato con questi progetti, quindi c'è qualcosa di sbagliato nella mia configurazione.
Ho letto qualcosa sulle directory che devono trovarsi in sys.path. Ciò significa che devo aggiungerli al percorso della variabile d'ambiente? Ciò significherebbe aggiungere molte directory al PERCORSO, quindi non può essere.
Così ho anche trovato la seguente:
import sys
sys.path.append(<path to FolderB>)
Ma questo significa cambiare il codice (che non è stato necessario per gli altri) e codificare un percorso a quello che è sulla mia macchina locale - che Non dovrei, no?
Non riesco a visualizzarlo - apparentemente non dovrei cambiare il codice e codificare il percorso fisico del modulo di importazione - quindi come può un programma dalla cartellaA anche sapere di cercare nella cartella B per un'importazione?
Come funziona la magia di __init__.py
?
Python analizza la variabile di ambiente 'PYTHONPATH', non' PATH' – mgilson