欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Python3 Import报错__main__ is not a package

程序员文章站 2022-07-14 21:29:36
...

0x00 问题描述

最近在import模块(包)时遇到一个问题,ModuleNotFoundError: No module named '__main__.msg_backend'; '__main__' is not a package

  • 文档目录结构
    Server
    	|__server.py
    	|__msg_backend
    		|__ __init__.py
    		|__redis.py
    		|__views.py
    
  • Server/server.py
    Python3 Import报错__main__ is not a package
  • Server/msg_backend/views.py
    Python3 Import报错__main__ is not a package
  • 运行Server/server.py报错
    Python3 Import报错__main__ is not a package

0x01 解决方法

方法一:使用sys和os模块将当前文件夹Server加入包扫描路径

  • 在入口文件Server/server.py中修改代码。注意圈出部分与原文件的区别
    Python3 Import报错__main__ is not a package

方法二:将当前文件夹Server变成Python package

  • 在Server文件夹下增加__init__.py文件
    Python3 Import报错__main__ is not a package
  • 入口文件Server/server.py,依旧采用from Server.msg_backend.views import url_map方式
    Python3 Import报错__main__ is not a package
    Done!

0x02 注意

包名与模块名一定不要重名。比如我一开始主文件夹叫Server,它下面的入口模块也叫Server.py

	Server
		|__Server.py
		|__msg_backend
			|__ __init__.py
			|__redis.py
			|__views.py

这样一来,上述两种方法都不起效。发现这问题之前,我简直崩溃…,不过你们应该没我这么蠢叭

相关标签: pure python python

上一篇: 聊一聊 JSONP

下一篇: State设计模式