python 填坑 ModuleNotFoundError: No module named '__main__.XX'; '__main__' is not a package

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_41357300/article/details/87709727

python3版本

from .XX.logger import Logger
ModuleNotFoundError: No module named '__main__.XX'; '__main__' is not a package

 

from .output.logger import Logger


from .output.logger import Logger
ModuleNotFoundError: No module named '__main__.output'; '__main__' is not a package

 

不知道原因

解决办法是不使用当前路径的  .

 

from automationtest_frame.output.logger import Logger

同时

1、把automationtest_frame 的上级路径放到系统path里

2、把autimation_frame的上级目录作为工程目录打开

 

以下是终极原因****************************************************************************************************************************

接着调查原因明确了,不能简单的这样执行,这样执行的话,模块的名字被变成了__main__

例如

run.py

from .dir_2.testfile import TestFile

class Run(TestFile):
    def hello(self):
        print("hello")
        self.nothing()

dir_2\testfile.py

class TestFile():
    def nothing(self):
        return

直接执行run.py就报错了,当前文件方式执行的话,上级目录相对的包名,也变成了__main__

所以必须是run.py以module来执行,例如如下方式

run1.py里,调用run来执行

from dirtest.run import Run
Run().hello()

所以使用from的话,还是建议使用本文开始说的结局方案比较好,直接使用相对路径会出现问题

 

 

展开阅读全文

没有更多推荐了,返回首页