Python:禁用相对导入[重复]

Posted

技术标签:

【中文标题】Python:禁用相对导入[重复]【英文标题】:Python: Disabling relative import [duplicate] 【发布时间】:2012-10-25 09:30:56 【问题描述】:

可能重复:How to access a standard-library module in Python when there is a local module with the same name?

我使用的是 Python 2.6。

我只在我的应用程序中使用绝对导入。现在我有了这个:

myapp 
  |
   -- myscript 
   -- json
        |
         -- anotherscript.py

在我的脚本中,我有:

import json
import myapp.json.anotherscript

由于Python相对导入机制,import json并没有按照我的意愿导入内置库,而是将我自定义的json包导入到当前命名空间中。

在这种情况下,有没有办法在 Python 中禁用相对导入,或者至少有一种技巧可以避免这种情况?否则,我将不得不将我的包重命名为其他没有 jsonutils 意义的东西。

提前致谢。

【问题讨论】:

为什么要避开from . import json?引入该语法是为了解决您的问题!无论如何,作为一项规则,永远不要将模块命名为内置。 【参考方案1】:
from __future__ import absolute_import

描述于PEP-328

【讨论】:

似乎不适用于 Python 2.7 @sorin 它是如何失败的?对我来说它在 2.7 上运行良好

以上是关于Python:禁用相对导入[重复]的主要内容,如果未能解决你的问题,请参考以下文章

python相对导入示例代码不起作用[重复]

在 Python3 中具有相对导入的 ImportError [重复]

Python(3.4)中的绝对或相对导入与兄弟目录[重复]

Python错误-ImportError:尝试使用没有已知父包的相对导入[重复]

ValueError:尝试在非包中进行相对导入[重复]

python - 了解 ModuleNotFoundError:没有名为“__main__.xxx”的模块(相对导入)[重复]