Python:互相导入

标签 python

我知道这个问题还有一些疑问: Python files - import from each other

但是这个解决方案对我不起作用。

这是目录结构:

├── tester.py
└── utility
    ├── __init__.py
    ├── analysis.py
    └── util.py

__init__.py

from .analysis import *
from .util import *

分析.py

import util


def funcA():
    print("a")

util.py

import analysis

def funcB():
    print("b")

但是这种情况发生了,

ImportError: No module named 'util'

我想按照我定义的方式 main __init__.py

有什么办法可以解决这个问题吗?

最佳答案

这是循环导入的经典案例。 analysisutil 导入,utilanalysis 导入。尽管您可以通过导入函数/方法以使其在运行时发生来解决该问题,但我建议改进代码的设计。

循环导入错误通常表明您的代码设计存在问题。在您的情况下,analysis 文件和 util 文件中的代码一起属于单个文件,或者您需要将两个文件的公共(public)内容存储在单独的 common 文件并从两个文件中的 common 导入,而不是相互导入。

关于Python:互相导入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44179458/

相关文章:

python - 线程错误中函数的返回值

python - Pandas 一次迭代多行重叠

python - python 中的默认方法实现(__str__、__eq__、__repr__ 等)

python - 简单的基本 Python 比较

python - 导入错误 : No module named 'Cython'

python - 在python中操作时间序列数据: summing series and aggregating over a time period

javascript - 从 flask Pandas 到制表机表都一团糟

Python 字符串正则表达式中的大小写标准

python - 导入错误: `load_model` requires h5py when loading hdf5

python - Django 左外连接