python 引入 __init__.py 中的方法报错不存在

问题

在脚本 article.py 中引入当前目录下的 __init__.py 的内容报错 ImportError: cannot import name 'fake'

路径

test/

__init__.py
article.py

文件 __init__.py 中

# -*- coding:utf-8 -*-
def fake():
    print('A')

文件 article.py 中

# -*- coding:utf-8 -*-
from . import fake
print(fake)

执行 python article.py 报错提示:

Traceback (most recent call last):
  File "article.py", line 2, in <module>
    from . import fake
ImportError: cannot import name 'fake'

如何在 article.py 中引入 __init__.py 中的内容

阅读 11.3k
5 个回答

临时的解决方式就是 from __init__ import fake ,但这种写法实在是太诡异了,这种方式就把 __init__.py 视为普通的 python 文件而已。 然而, __init__.py 给包使用的,一个特殊文件的存在,而例子的程序入口又视为要导入的模块,实在是难受,就像吃饭时吃到了沙子。

包中的模块部分要引入 __init__ 的变量的正确姿势可以参照标准库的处理方式:

图片描述

希望对你有帮助。

这样试试

form test import fake

感觉是一个奇怪的结构,首先上解决方法:

from __init__ import fake

应该可以。

但是还是不推荐这么做,直接写__init__import里可能会导致以后的导入问题。建议把article.py移到\test外。然后再用from test import fake。究其原因在于article.py是你要导入的模块的本事一部分,如果直接用from . import fakefrom test import fake来导入会报错。

最后FYI,用\test这个命名可能和python自带的test重合,建议用个别致一点的名字。

__init__.py 是给包用的,你导入的.是什么意思...

form test import fake

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题