python-自定义导包问题ModuleNotFoundError: No module named
我自己写了一个包,包下又写了一个包,具体来说长这样:
C:\Users\Administrator\Desktop\WebPageDecompressionEnvoy
│
├── WebPageDecompressionEnvoy
│ ├── __init__.py
│ ├── Main_window.pyw
│ ├── WebPageDecompressionEnvoy.py
│ ├── MhtToHtml.py
│ ├── ResourcesManager
│ ├── __init__.py
│ ├── ResourcesManager.py
│ ├── Compress
│ ├── __init__.py
│ ├── Compress.py
我在ResourcesManager下导包Compress,使用如下语句
from WebPageDecompressionEnvoy.Compress.Compress import Compress
随后报错
ModuleNotFoundError: No module named 'WebPageDecompressionEnvoy.Compress'; 'WebPageDecompressionEnvoy' is not a package
询问ai之后,给了我几个方案
1.改成相对路径
from ..Compress.Compress import Compress
但是会很快乐地出现以下错误,并且找不到解决方案
ImportError: attempted relative import beyond top-level package
2.检查pycharmedit configxxx下的work path
3.确保每个包下都有一个空的init文件以保证都会被识别为包
是没有问题的,每个下都有
检查了,但是无误
其他方案都没有可行性。于是把我搞得很郁闷
查看了几个导包的帖子 左看右看感觉自己还是没有问题后,换了个ai,给出了如下答复引起了我的警觉
错误的原因是存在一个名为WebPageDecompressionEnvoy.py的文件,导致Python将其视为模块而不是包,从而无法正确导入子模块。
我的根目录就是WebPageDecompressionEnvoy,随后下面有一个同名的py。
最开始我没有打算注意他,毕竟我的compress和resource manager都是同名的。
尝试了一番后,发现代码正常运行。
不得不说py是个神奇的存在。为什么会出现这个情况我还没搞清楚,如果有明白的希望留言