You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中__init__.py定义的函数调用失败问题求助

解决NameError: name 'print_hello' is not defined问题

你的问题出在模块导入的命名空间逻辑上:当执行import module1时,模块对象被成功导入,但模块内的函数并没有直接进入全局命名空间,必须通过模块名访问,或者显式导入函数。

三种可行的解决办法:

1. 通过模块名调用函数

修改main.py代码:

import module1

module1.print_hello()

2. 直接导入目标函数

修改main.py代码:

from module1 import print_hello

print_hello()

3. 导入模块所有公开成员(利用你定义的__all__)

修改main.py代码:

from module1 import *

print_hello()

你在__init__.py里定义的__all__ = ["print_hello"],作用就是限定import *时会导入的成员,刚好匹配你的需求。

补充说明

你看到Init loaded被打印,是因为Python在导入模块时会执行__init__.py里的所有顶层代码,这说明模块确实被成功加载了,只是函数没被导入到当前可直接调用的命名空间里。

内容的提问来源于stack exchange,提问作者Roman Toasov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 18:37:02