Ho due progetti separati che condividono il nome di un pacchetto. Funzionano correttamente purché non siano entrambi su PYTHONPATH, ma non appena entrambi appaiono, uno di loro non riesce a trovare le importazioni nel proprio progetto.I moduli con una gerarchia di pacchetti comune menzionati più volte nel mio PYTHONPATH?
esempio, due progetti come questo:
Progetto 1:
x/
__init__.py
test.py
foo.py
test.py contiene la riga:
import x.foo
Progetto 2:
x/
__init__.py
bar.py
Se Corro
PYTHONPATH=. python x/y/test.py
non ci sono errori. Ma se corro
PYTHONPATH='pathtoproject2:.' python x/test.py
ottengo l'errore:
Traceback (most recent call last):
File "x/test.py", line 1, in <module>
import x.foo
ImportError: No module named foo
C'è un modo per avere diversi progetti Python con una quota pacchetto comune la PYTHONPATH? O Python utilizzerà sempre solo il primo percorso in cui viene trovato un pacchetto?
Nota: so se si modifica l'importazione da x.foo per importare foo, quindi funzionerà. Ma voglio sapere se è possibile farlo senza modificare alcun pacchetto.
+1 sembra che anche se possibile, come spiegato nel altra risposta, non è il modo in cui Python .. . –