2011-06-20 10 views
26

Sigo viendo sitios que mencionan que el directorio que ejecuta 'python' se agrega a la ruta de Python. Por ejemplo, en http://www.stereoplex.com/blog/understanding-imports-and-pythonpath, los cd del autor a la carpeta/tmp luego 'print (sys.path)' y he aquí que la carpeta/tmp aparece en la lista de rutas. Aquí me está tratando esto en mi sistema (con 2.6.6 instalado):¿Por qué mi python no agrega el directorio de trabajo actual a la ruta?

ejemplo de estructura:

app/ 
    mymodule.py 
    inner_folder/ 
    myscript.py 

en myscript.py contiene la línea:

import 'mymodule.py' 

lo que hice:

cd app 
python inner_folder/myscript.py # ImportError 

desde que estoy ejecutando el intérprete de la aplicación/directorio, no debe 'app' ser puesto en el Pyth ¿en camino? Así es como muchos de los documentos que he estado leyendo han especificado que el comportamiento debería ser.

Por favor ilumine!

(He resuelto esto de forma temporal añadiendo manualmente la carpeta que quiero al entorno, pero no quiero depender de eso para siempre. Como muchos sitios dicen que se puede hacer, me gustaría reproducirlo por mi cuenta)

+7

no quiere decir: 'import mymodule' en lugar de' import' mymodule.py ' '. – mouad

Respuesta

49

Es el directorio del script que se agrega, no el directorio actual. Si convierte inner_folder/ en un paquete, puede usar python -m inner_folder.myscript para ejecutar el script y tener app/ agregado al sys.path.

+0

+1: de hecho, incluso con la importación fija, esta es la solución real. –

+2

Gracias por aclarar. Sabía que el directorio del guión se había agregado, pero la única razón por la que creía que también se había agregado el "directorio actual" era porque solía funcionar. ¡Lo juro! Algo debe haber sucedido para que deje de funcionar. No recuerdo haber modificado PYTHONPATH de ninguna manera, así que esta es la razón por la que hice esta pregunta. – trinth

+1

Al ejecutar Python 2.7 en mac OS 10.7.5, el directorio actual se agrega para mí y funciona el código de ejemplo original. –

5

sea o no el directorio actual está en sys.path, las declaraciones de importación generalmente se parecen:

import mymodule 

el código que escribió el siguiente aspecto:

import 'mymodule.py' 
Cuestiones relacionadas