如何使absolute_import成为所有模块中的默认值

Fla*_*ien 5 python import python-2.7

在网上阅读之后,我注意到有人承诺Python 2.7会使用绝对导入作为默认值.然而,似乎并非如此,我们仍然必须使用

from __future__ import absolute_import
Run Code Online (Sandbox Code Playgroud)

我不希望我的代码使用一些遗留设置,所以我想确保所有模块都启用了此功能.怎么做,而不必在每个模块中重复这个陈述?

Eth*_*man 2

from __future__导入必须首先完成,并且是特定于模块的。如果没有在所有模块中实际使用该行,则没有简单的方法可以使其对所有模块生效。

我相信您可以使用grep(如果没有,请自行推出)来告诉您哪些模块中没有该行

如果您想以困难的方式做到这一点,请查看importlib, 或替换__import__。使用这两种方法之一,您可以打开.py文件,插入

from __future__ import absolute_import
Run Code Online (Sandbox Code Playgroud)

行(如果尚未存在),然后进行实际导入。但是,请注意不要将该行添加到除您自己的模块之外的其他模块中,因为毫无疑问,您会从需要相对导入语义的模块中收到错误。