我有两个python模块:

a.py

import b

def hello():
  print "hello"

print "a.py"
print hello()
print b.hi()

b.py

import a

def hi():
  print "hi"

当我运行a.py时,我得到:

AttributeError: 'module' object has no attribute 'hi'

这个误差是什么意思?我该怎么解决呢?


当前回答

我也遇到过同样的问题。 使用重载修复。

import the_module_name
from importlib import reload
reload(the_module_name)

其他回答

不知道如何,但下面的改变排序我的问题:

我的文件名和导入名称相同,例如我的文件名为emoji.py,我试图导入表情符号。但是改变文件名解决了这个问题。

希望能有所帮助

让我们通过例子来看看问题和解决方案,循环依赖关系是如何到达的。 我有一个文件窗口数据生成器。ipynb执行主文件导入如下两个文件。

escape.py MutationTypes.py

escape.py已经导入MutationTypes.py文件 现在,在窗口数据生成器中。我想执行MutationTypes.py的功能,如下所示:

import escape as ESC
import MutationTypes
MutationTypes.SINGLE_RES_SUB 

错误提示为AttributeErrorTraceback(最近一次调用)/tmp/ipykernel_4340/4282764781.py在<module> ----> 1 MutationTypes中。属性错误:模块“MutationTypes”没有属性“SINGLE_RES_SUB”

如何解决这个问题? 因为您已经在转义模块中导入了MutationTypes文件,下面使用转义模块使用MutationTypes文件功能

ESC.MutationTypes.SINGLE_RES_SUB

我遇到这个错误是因为实际上没有导入模块。代码是这样的:

import a.b, a.c

# ...

something(a.b)
something(a.c)
something(a.d)  # My addition, which failed.

最后一行导致一个AttributeError。原因是我没有注意到a的子模块(a.b和a.c)被显式导入,并假设import语句实际上导入了a。

我也遇到过同样的问题。 使用重载修复。

import the_module_name
from importlib import reload
reload(the_module_name)

在我使用python 2.7和numpy 1.15.0版本工作的情况下,它与

pip install statsmodels=="0.10.0"