PROJECT_ROOT = os.path.dirname (__ file__) ошибка - PullRequest
6 голосов
/ 05 апреля 2011

Когда я пытаюсь:
PROJECT_ROOT = os.path.dirname(__file__)
я получаю такую ​​ошибку:
Traceback (most recent call last):<br> File "< stdin>", line 1, in <module><br> NameError: name '__file__' is not defined

Кто-нибудь знает, как это исправить?

Ответы [ 3 ]

4 голосов
/ 05 апреля 2011

Если вы пытаетесь использовать __file__ от вашего переводчика, __file__ не определено. Это предполагаемое поведение. __file__ является атрибутом модулей. Here - обсуждение темы.

Вы можете проверить, выполнив это:

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

__file__ работает изнутри модулей.

Теперь от переводчика:

~$ 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__ не определено

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

__file__ не определено

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

__file__ определено для тестового модуля

4 голосов
/ 05 апреля 2011

Запустите эту строку кода через реальный модуль вместо Python REPL.

3 голосов
/ 24 сентября 2014

Пожалуйста, попробуйте это в ваших settings.py:

    PROJECT_ROOT = os.path.abspath(os.path.dirname(__file__))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...