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