5

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

from __future__ import absolute_import

我不希望我的代码使用一些遗留设置,所以我想确保所有模块都启用了这个。如何做到这一点,而不必在每个模块中重复此语句?

4

1 回答 1

2

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

我相信您可以使用grep(如果没有,请自己动手)告诉您哪些模块中没有该行。

如果您想以艰难的方式做到这一点,请查看其中一个importlib,或替换__import__. 使用这两种方法中的任何一种,您都可以打开.py文件,插入

from __future__ import absolute_import

行(如果还没有的话),然后进行实际的导入。但是,请注意不要将该行添加到您自己的模块之外的其他模块中,因为您无疑会从期望相对导入语义的模块中得到错误。

于 2012-10-05T17:28:48.090 回答