2014-12-03 12 views
5

Ho due file nella stessa directory, e non ci sono file __init__.py ovunque:Come funziona questa importazione Python?

c:\work\test>tree 
. 
|-- a 
| `-- a 
|  |-- a1.py 
|  `-- a2.py 
`-- b 

un file importa l'altro:

c:\work\test>type a\a\a1.py 
print 'a1-start' 
import a2 
print 'a1-end' 

c:\work\test>type a\a\a2.py 
print 'a2' 

L'importazione ha esito positivo anche quando eseguito da una posizione completamente diversa :

c:\work\test\b>python ..\a\a\a1.py 
a1-start 
a2 
a1-end 

io corro

c:\work\test>python -V 
Python 2.7.3 

ei miei PYTHONPATH e PYTHONHOME variabili non sono impostate

c:\work\test>echo %PYTHONPATH% %PYTHONHOME% 
%PYTHONPATH% %PYTHONHOME% 

Come si fa a trovare a1.pya2?

+0

avrei Hazzard una supposizione che, come PHP, Python valuterà più sedi per trovare i file, tra cui la directory di lavoro corrente? –

+0

La directory di lavoro corrente viene' test \ b' ... – thebjorn

+0

lo script è in esecuzione da a comunque, perdonare la mia mancanza di conoscenza Python, ma php e credo che la maggior parte delle lingue tratterebbe questo scenario allo stesso modo, quando si digita .. che sta cambiando la directory di lavoro per quello script solo –

risposta

8

Una citazione dal module docs (sottolineatura mia):

"Quando un modulo di nome spam viene importato, l'interprete cerca prima un modulo incorporato con quel nome, se non trovato, poi cerca a. file chiamato spam.py in un elenco di directory fornite dal sys.path variabile sys.path è inizializzata da queste posizioni:..

  • la directory che contiene lo script di input (o la directory corrente)
  • PYTHONPATH (un elenco di nomi di directory, con la stessa sintassi della variabile di shell PATH).
  • l'installazione di default-dipendente."
+0

Ah, mi sono confuso perché non ho visto un riferimento a 'test \ a \ a' ovunque in' sys.path' (che inizia con '['', 'c: \\ python27 \\ lib .. '). – thebjorn

+0

@thebjorn: '''' si riferisce alla parte in grassetto della risposta di ofrommel. Vedi ['sys.path'] (https://docs.python.org/3/library/sys.html#sys.path). – Kevin

Problemi correlati