#django
#django
Вопрос:
Когда я пытаюсь:
PROJECT_ROOT = os.path.dirname(__file__)
я получаю ошибку, подобную этой:
Traceback (most recent call last):
File "< stdin>", line 1, in <module>
NameError: name '__file__' is not defined
Кто-нибудь знает, как это исправить?
Ответ №1:
Запустите эту строку кода через реальный модуль, а не в Python REPL.
Комментарии:
1. Я пытаюсь сделать это четко в bash:
PROJECT_ROOT = os.path.dirname(__file__)
и теперь я получаю:-bash: syntax error near unexpected token
(» Я все еще не знаю некоторых важных вещей о bash, я думаю.. Есть ли какое-либо решение, которое вы могли бы предоставить?2. Вам действительно нужно прекратить писать код Python в командной строке bash. И пока вы этим занимаетесь, прочитайте руководство. docs.python.org/tutorial/index.html
Ответ №2:
Если вы пытаетесь использовать __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__
определено для тестового модуля
Комментарии:
1. Это кое-что объясняет мне, но я все еще не знаю, каково решение моей проблемы. Я не хочу читать книгу по python, мне просто нужно создать небольшой проект django-powerade с двумя приложениями в одной папке. Должно быть два приложения в одной папке. Но спасибо за некоторые указания.
Ответ №3:
Пожалуйста, попробуйте это в вашем settings.py :
PROJECT_ROOT = os.path.abspath(os.path.dirname(__file__))