Django 中的当前目录 (os.getcwd) 如何确定?

Current directory (os.getcwd) from within Django determined how?

我在 Python 2.7 上使用 Django 1.7 并注意到我的生产 host (Webfaction) 与开发 machine (mac os x)。

在我的开发 machine 上,当我通过 cmds

获取当前工作目录时
import os
dirspot = os.getcwd()
print dirspot

我得到了 manage.py 可执行文件的位置。 当我在 host (webfaction) machine 上执行此操作时,我会得到不同的响应,具体取决于 Django 站点是 运行ning 还是使用 Django shell.

所以我的项目(和 manage.py)位于:

/home/ross/webapps/djangoarea/myproj

运行

python manage.py shell

然后上面的 os.getcwd() 我得到

/home/ross/webapps/djangoarea/myproj

但是如果我将相同的命令放入 views.py 和 运行 我的项目中,我会得到

/home/ross/

我猜它可能与 apache2 和 wsgi 运行ning django 有关,而不是 manage.py 调用它。有人知道如何使它保持一致吗?

提前致谢, Ross.

不确定你到底想做什么,但正如你所发现的,os.getcwd() 与文件或脚本的位置没有任何关系,它与你正在执行的位置有关剧本。由于多种原因,这并不可靠——例如,可能在主机上,您的 Web 进程 运行 作为与脚本所有者完全不同的用户。如果你想获得与你的文件相关的东西,你可能想使用 os.path.abspath(os.path.dirname(__file__))os.path.realpath(path)

https://docs.python.org/3.3/library/os.path.html#os.path.realpath

以防万一有人觉得它有用。 你可以看到你的工作目录,或者使用请求直接在 django 中打印工作。这种行为似乎适用于框架的请求,尽管我不确定它是否适用于常规的 django 请求。

def some_view(self, request, *args, **kwargs):
    request.META.get('pwd')

希望对大家有用