【发布时间】:2014-09-28 03:36:03
【问题描述】:
请解释为什么os.path.dirname(__file__) 在 Django 中工作,但在 python 中不工作?
这是一种我无法理解的奇怪情况。
我制作了一个python脚本并将其放入文件test_file.py中:
import os
dirname = os.path.dirname(os.path.dirname(__file__))
realpath = os.path.dirname(os.path.realpath(__file__))
abspath = os.path.dirname(os.path.abspath(__file__))
print dirname
print realpath
print abspath
当我运行脚本时,我会得到结果:
(env)user@ubuntubox:~/srv/django_pro$ python test_file.py
/home/srv/django_pro
/home/srv/django_pro
(env)user@ubuntubox:~/srv/django_pro$
我得到 realpath 和 abspath 工作的结果,但 dirname 为空。但是在 Django settings.py 我有:
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
如果我进入python shell并打印出BASE_DIR,它不为空:
(env)user@ubuntubox:~/srv/django_pro$ python manage.py shell
Python 2.7.6 (default, Mar 22 2014, 22:59:56)
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> from django.conf import settings
>>>
>>> print 'BASE_DIR:\n%s' % settings.BASE_DIR
BASE_DIR:
/home/srv/django_pro
>>>
这意味着 os.path.dirname(os.path.dirname(file)) 不为空。在这两种情况下,我都使用相同的 python。而我的 Django 版本是:
Django==1.7b4
那么诀窍是什么?
【问题讨论】:
-
在 Django 中工作但不在 python 中?这甚至意味着什么?
-
是的。在 Django 中工作,但不在 Python 中。
-
@Martijin Pieters 来了。现在一切都会好起来的 :-) 我在 Python 中遇到的每一个问题都得到了他的解答 :-)
-
Django 是 Python。 “在 Django 中工作而不是在 Python 中工作”是完全无意义的说法。
-
老实说,我正在阅读这些答案,但我没有发现这是一个重复的问题。我相信对于许多 python 初学者来说,可能会出现这样的问题。很遗憾它被标记为重复,但感谢您的回答。我会尽可能接受。
标签: python django python-2.7