Python 2/3改进了导入问题

Python 2/3 retofit issue with imports

我有一个用python 2编写的包,我正在尝试对其进行改造以使用python 3。至少可以说是痛苦的。我在使用未来绝对输入部分代码时遇到问题。

这适用于python 2,但不适用于python 3,所以我希望有人能指出我的问题。

包装结构为:

1
2
3
4
5
fusion
  -> __init__.py
  agol
    -> featureservice.py
    -> layer.py

fusion init定义为:

1
2
from __future__ import absolute_import
from . import agol

AGOL子包的定义如下:

1
2
3
from __future__ import absolute_import
from . import featureservice
from . import layer

featureservice.py具有此导入,其中问题是:从。导入层layer.py具有类似的导入:从。导入功能服务

它们可以相互引用,其中层可以是功能服务的子级。但是我得到了这个导入问题,将这个模块导入到每个py文件中的正确方法是什么?

谢谢你


循环相对导入在Python3中不起作用。

循环导入被认为是一种糟糕的实践,因为您已经将两个模块紧密地耦合在一起。您可以考虑为什么需要将featureservice导入layerlayer导入featureservice

也许每个模块中都有一些函数应该在另一个模块中,而这两个模块都依赖于它们?或者,您应该将这些模块合并在一起,而不是进一步拆分它们?

相关阅读:

  • python 2和3中的循环导入
  • python 3中的相对导入问题