Python2.7项目模块导入失败求助[入门级]
别担心,这是Python新手常遇到的模块导入小坑,我帮你一步步梳理解决方案:
问题分析
你碰到的 ImportError: No module named ui.MainWindow,核心原因要么是导入语句的引用逻辑不对,要么是Python的模块搜索路径没包含项目根目录,咱们逐个解决。
具体解决方案
1. 修正导入语句的引用方式
你当前用的是 import ui.MainWindow,这意味着你导入的是ui包下的MainWindow模块,但代码里直接调用MainWindow(...)时,Python找不到这个类——因为类是嵌套在ui.MainWindow模块内部的。
有两种简单的修正方式:
方式A:直接导入目标类
把main.py里的导入语句改成:
from ui.MainWindow import MainWindow
这样你就能直接在main函数里用MainWindow(None, title="Internet HW"),和你原本的代码写法完全兼容。
方式B:保留原导入,调用时补全模块前缀
如果不想修改导入语句,那调用类的时候要写完整的路径:
ui.MainWindow.MainWindow(None, title="Internet HW")
2. 确保运行环境的工作目录正确
一定要在Project根目录下运行main.py:
- 打开终端/命令行,切换到Project文件夹(比如执行
cd /你的项目路径/Project) - 再执行
python main.py
如果是在子文件夹(比如ui目录)里运行,Python的模块搜索路径不会包含项目根目录,自然找不到ui这个包。
3. 确认__init__.py的有效性
你已经在ui文件夹里放了__init__.py,哪怕这个文件是空的也没问题——它的作用就是告诉Python这个文件夹是可导入的包,这一步你已经做对了。
额外检查:文件名大小写(针对Linux/macOS用户)
如果你用的是Linux或macOS,Python对文件名大小写敏感,要确保你的文件名是MainWindow.py,导入时的ui.MainWindow拼写完全一致(别写成ui.mainwindow这类错误形式)。
测试修正后的代码示例
用方式A修改后的main.py完整代码:
import sys import wx from ui.MainWindow import MainWindow def main(): app = wx.App() MainWindow(None, title="Internet HW") app.MainLoop() main()
在Project根目录下运行这段代码,应该就能正常导入并运行了。
内容的提问来源于stack exchange,提问作者user7973129

