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

命名为__main__.py的Python模块导入后无法运行的问题

为什么导入__main__.py无输出,重命名后正常?

核心问题:__main__是Python的特殊模块名

Python里,__main__是当前正在执行的脚本对应的模块名,不是你创建的那个__main__.py文件。当你运行test.py时,test.py本身就被标记为__main__模块,这时候执行import __main__,导入的是test.py自己,完全没碰同目录下的__main__.py。

这就导致:

  • 你写的__main__.py根本没被加载,所以里面的打印语句不会执行,add函数也调用不了
  • 改成func.py后,这个名字不是Python保留的特殊名称,import func会正常加载同目录下的func.py,模块内的代码会按导入逻辑执行(__name__会被设为func,打印语句正常输出,函数也能调用)

验证方法

在test.py里加两行代码就能确认:

import __main__
print(__main__.__file__)  # 输出的是test.py的路径,不是__main__.py的路径
print(dir(__main__))      # 列表里不会有add函数,说明没加载目标文件

解决办法

如果要加载包含add函数的文件,绝对别用__main__.py当文件名,换成普通名称(比如func.py)后正常导入就行。要是想让某个目录作为可执行包(比如用python -m 包名运行),那__main__.py应该放在包目录下,作为包的入口脚本,而不是当作普通模块导入。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 19:12:04