我喜欢在Python 2.7中使用absolute_import
函数。因为在Python 2.7中没有absolute_import
所以我必须像这样导入它。
from __future__ import absolute_import
在我的Django项目中,我有很多文件,比如models.py, views.py
等等。在每个文件的顶部,我必须把
from __future__ import absolute_import
能够使用此功能。
问题如下:
如果有可能只在项目中导入absolute_import
一次并在任何地方使用它?
答案 0 :(得分:2)
频繁使用absolute_import
的问题通常是由于包中的模糊性引起的。如果您正在开发多个子包并且需要经常使用absolute_import
来使用顶级包,只需重命名问题子包。无论如何,这是一个好主意。
答案 1 :(得分:1)
可以重新定义由import
语句调用的__import__
built-in function。这可用于模拟absolute_import
的行为。您需要在导入任何内容之前执行此操作:
# This function will replace __builtin__.__import__.
# By default, the fifth argument (level) is not supplied.
# We use the value 0, which means absolute import.
def new_import(name, globals, locals, fromlist, level=0):
# Call the original function.
return orig_import(name, globals, locals, fromlist, level)
import __builtin__
# Save a reference to the original function.
orig_import = __builtin__.__import__
# Replace it with the new one.
__builtin__.__import__ = new_import
现在,程序中任何地方的所有import
语句都会调用此函数,这将使它们执行绝对导入,除非它们明确使用相对导入语法。