2011-04-05 14 views
5

cuando intento:
PROJECT_ROOT = os.path.dirname(__file__)
me sale error como este:
Traceback (most recent call last):
File "< stdin>", line 1, in <module>
NameError: name '__file__' is not defined
PROJECT_ROOT = os.path.dirname (__ file__) Error

¿Alguien sabe cómo solucionar este problema?

Respuesta

4

Ejecuta esa línea de código a través de un módulo real en lugar de hacerlo en Python REPL.

+0

Trato esto claramente en bash: 'PROJECT_ROOT = os.path.dirname (__ file__) ' y ahora recibo: ' -bash: error de sintaxis cerca del token inesperado '('' Todavía no sé algunas cosas importantes sobre bash, creo ... ¿Hay alguna solución que puedas proporcionar? – krzyhub

+1

* Realmente * necesita dejar de escribir el código Python en el indicador bash. Y mientras lo haces, lee el tutorial. http://docs.python.org/tutorial/index.html –

+0

Así que tengo mucho trabajo por hacer. Gracias por todo. – krzyhub

4

Si está tratando de usar __file__ de su intérprete, no se define __file__. Este es el comportamiento previsto. __file__ es un atributo de los módulos. Here es una discusión sobre el tema.

usted puede probar al hacer esto:

~$ echo "print __file__" > test.py 
~$ python test.py 
test.py 

__file__ funciona desde dentro de los módulos.

Ahora del intérprete:

~$ python 
Python 2.7.0+ (r27:82500, Sep 15 2010, 18:04:55) 
[GCC 4.4.5] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> print __file__ 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
NameError: name '__file__' is not defined 

__file__ no está definido

>>> import test 
test.pyc 
>>> print __file__ 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
NameError: name '__file__' is not defined 

__file__ no está definido

>>> print test.__file__ 
test.pyc 
>>> 

__file__ se define para el módulo de prueba

+1

Eso me explica algo, pero todavía no sé cuál es la solución para mi problema. No quiero leer el libro de Python, solo necesito hacer un pequeño proyecto django-powerade con dos aplicaciones en una carpeta. Debe ser dos aplicaciones en una carpeta. Pero gracias por algunas direcciones. – krzyhub

2

Por favor, intente esto en su settings.py:

PROJECT_ROOT = os.path.abspath(os.path.dirname(__file__)) 
Cuestiones relacionadas