Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 获取Django本身的路径_Python_Django - Fatal编程技术网

Python 获取Django本身的路径

Python 获取Django本身的路径,python,django,Python,Django,我有一些代码可以在每个(几乎)管理请求上运行,但不能访问“request”对象 我需要找到Django安装的路径。我可以做到: import django django_path = django.__file__ 但是在请求中,这似乎是相当浪费的。 将导入放在模块的开头是否会浪费内存?我敢肯定我在这里错过了一个明显的技巧。只要Django已经在Python过程中被导入了imported(它已经这样做了,如果你的代码在一个视图函数中),再次导入它将不会“做任何事情”*-因此,请使用import

我有一些代码可以在每个(几乎)管理请求上运行,但不能访问“request”对象

我需要找到Django安装的路径。我可以做到:

import django
django_path = django.__file__
但是在请求中,这似乎是相当浪费的。


将导入放在模块的开头是否会浪费内存?我敢肯定我在这里错过了一个明显的技巧。

只要Django已经在Python过程中被导入了
import
ed(它已经这样做了,如果你的代码在一个视图函数中),再次导入它将不会“做任何事情”*-因此,请使用
import Django;django.\uuuu文件\uuuu

现在,如果当前Python进程没有导入Django(例如,您正在调用
os.system(“myscript.py”)
并且
myscript.py
需要确定Django的路径),那么
import Django
将有点浪费。但是,在每个请求上生成一个新进程也是相当浪费的……因此,如果效率很重要,那么无论如何导入myscript可能会更好


*:实际上,它会在字典中设置一个值……但这“没什么”。

显而易见的问题是,为什么需要django安装路径。。。它有做错事的味道。这是在模板标签中。我原本以为“django”是可见的,但我得到了一个名称错误。可能是其他原因造成的?您确实需要显式导入
django
,以使名称可见。但是,Python会缓存导入,因此不会重新导入。您可以通过查看
sys.modules
了解其工作原理。基本上,当你说
import foo
时,如果
sys.modules['foo']
存在,就会使用它。我不清楚的是导入的缓存。我想,只有当您以完全相同的方式导入时,它才有效?i、 e.我会因为诸如“导入django as”或“来自django导入”之类的导入而受到处罚……不,规范化(sp?)导入是非常明智的。例如:
>>将django作为foo导入;系统模块['django']-->
,来自django导入数据库的
>>;系统模块['django']-->