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
- Server/msg_backend/views.py
- 运行Server/server.py报错
0x01 解决方法
方法一:使用sys和os模块将当前文件夹Server加入包扫描路径
- 在入口文件Server/server.py中修改代码。
注意圈出部分与原文件的区别
方法二:将当前文件夹Server变成Python package
- 在Server文件夹下增加
__init__.py
文件
- 入口文件Server/server.py,依旧采用
from Server.msg_backend.views import url_map
方式
Done!
0x02 注意
包名与模块名一定不要重名
。比如我一开始主文件夹叫Server
,它下面的入口模块也叫Server.py
Server
|__Server.py
|__msg_backend
|__ __init__.py
|__redis.py
|__views.py
这样一来,上述两种方法都不起效。发现这问题之前,我简直崩溃…,不过你们应该没我这么蠢叭
推荐阅读
-
解决python3 安装完Pycurl在import pycurl时报错的问题
-
Python3 Import报错__main__ is not a package
-
执行文件异常报错:ImportError: attempted relative import with no known parent package
-
解决python3 安装完Pycurl在import pycurl时报错的问题
-
import matplotlib报错:No module named '_tkinter', please install the python3-tk package
-
执行文件异常报错:ImportError: attempted relative import with no known parent package