wxPython无法导入同目录文件问题及解决过程
Fixing
ImportError: cannot import name 'QuestionAsk' in wxPython/Python 3.6.1 Project 我最近在用Python 3.6.1结合wxPython开发GUI程序时,碰到了一个典型的循环导入问题,折腾了好一会儿才搞定,这里把问题场景和解决方法分享给大家:
问题背景
我的项目文件调用关系是这样的:
Asker.py导入同目录下的Get.pyGet.py会调用gui.py里的功能gui.py尝试从Get.py导入QuestionAsk类
结果运行程序时直接抛出错误:
ImportError: cannot import name 'QuestionAsk'
问题根源
这其实是**循环导入(circular import)**在搞鬼:Get.py 和 gui.py 互相依赖,当Python解释器加载模块时,其中一个模块还没完成初始化(比如QuestionAsk类还没被定义),就被另一个模块尝试导入,自然会找不到指定的类。
解决步骤
我最终通过调整代码结构打破了循环依赖:
- 将
Get.py中的graphical_start函数迁移到gui.py中,去掉Get.py对gui.py的直接调用 - 修改导入逻辑,让
Asker.py直接导入gui.py,不再通过Get.py中转
调整后模块的依赖关系变成了:Asker.py → gui.pyAsker.py → Get.py
彻底消除了互相引用的情况,导入错误也就随之解决了。
内容的提问来源于stack exchange,提问作者Sutsuj
相关产品推荐
相关产品推荐

