Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >ModuleNotFoundError: No module named ‘__main__.XX‘;

ModuleNotFoundError: No module named ‘__main__.XX‘;

作者头像
狼啸风云
修改于 2022-09-02 13:05:13
修改于 2022-09-02 13:05:13
2.7K00
代码可运行
举报
运行总次数:0
代码可运行

python3版本

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from .output.logger import Logger
 
 
from .output.logger import Logger
ModuleNotFoundError: No module named '__main__.output'; '__main__' is not a package

不知道原因

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from automationtest_frame.output.logger import Logger

同时

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

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

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

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

例如

run.py

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from .dir_2.testfile import TestFile
     
class Run(TestFile):
       def hello(self):
            print("hello")
            self.nothing()

dir_2\testfile.py

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class TestFile():
    def nothing(self):
       return

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

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

run1.py里,调用run来执行

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from dirtest.run import Run
Run().hello()

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/07/27 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验