小编bal*_*jas的帖子

为什么os.path.dirname(__ file__)在Django中工作?

请解释为什么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
Run Code Online (Sandbox Code Playgroud)

当我运行脚本时,我得到结果:

(env)user@ubuntubox:~/srv/django_pro$ python test_file.py 

/home/srv/django_pro
/home/srv/django_pro
(env)user@ubuntubox:~/srv/django_pro$
Run Code Online (Sandbox Code Playgroud)

我得到了realpathabspath正在运行的结果,但是dirname是空的.但是在Django settings.py中我有:

BASE_DIR = os.path.dirname(os.path.dirname(__file__))
Run Code Online (Sandbox Code Playgroud)

如果我进入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
>>> …
Run Code Online (Sandbox Code Playgroud)

python django python-2.7

4
推荐指数
1
解决办法
6543
查看次数

标签 统计

django ×1

python ×1

python-2.7 ×1