美文网首页
Python 导入自建包报错ModuleNotFoundErro

Python 导入自建包报错ModuleNotFoundErro

作者: 冲锋丘丘人 | 来源:发表于2022-07-07 18:35 被阅读0次

    报错场景

    image.png

    如图,三个模块的关系:模块A导入模块B,而模块B导入模块C
    执行模块A时,会报错ModuleNotFoundError: No module named xxx,说找不到模块C。

    于是就打开模块B查看,发现导入模块C是正常的,这就让人很头疼


    image.png

    报错原因

    模块B和模块C是同一个包,而模块A又是在另一个包。同个包内的模块B可以用相对路径找到模块C,不同包的模块A则不能。

    解决方案

    方案一:项目根目录为起始路径导入包
    在IDE中执行python程序,编译器会自动把当前项目的根目录加入到包查找路径中,可以理解为加到PYTHONPATH下,所以导入写法如下:

    # 同个包的模块导入
    import logic_layer_pb2
    # 改为从项目根目录开始导入
    import yinpai.pb.logic_layer_pb2
    

    方案二:导包时,把目标模块的路径加入包查找路径中

    import grpc
    import os
    import sys
    # 把模块C的路径加入包查找路径中
    sys.path.append((os.path.dirname(os.path.abspath(__file__))))
    import logic_layer_pb2
    

    推荐使用方案一,养成好习惯,从项目根目录开始导包。

    相关文章

      网友评论

          本文标题:Python 导入自建包报错ModuleNotFoundErro

          本文链接:https://www.haomeiwen.com/subject/dhmpbrtx.html