代码之家  ›  专栏  ›  技术社区  ›  Vijaya Varma Lanke

ModuleNotFoundError:没有名为msg1的模块(在带有python2.7.6的ubuntu中没有显示任何错误)

  •  2
  • Vijaya Varma Lanke  · 技术社区  · 7 年前

    目录结构

    test.py Info __init.py msg1.py msg2.py msg3.py

    测试.py

    import Info  
    Info.msg1()  
    Info.msg2()  
    Info.msg3() 
    

    初始化

    from msg1 import msg1  
    from msg2 import msg2  
    from msg3 import msg3  
    

    消息1.py

    def msg1():  
    print "This is msg1"
    

    msg2.py msg3.py msg1.py 我用python3.7.0在windows pc上运行这个

    获取以下错误 PackageError

    请帮帮我

    谢谢您!

    2 回复  |  直到 7 年前
        1
  •  2
  •   Vineeth Sai    7 年前

    sys.path 而Python只查找直接到达该路径的模块。在您的例子中,它附加到test.py的路径中, 但是 ,从Python解释器的角度来看, msg1 Info. 远离目录 test.py 搜索路径 测试.py Info i、 e,有一个 缺口 __init__ 或者 您还可以添加 信息 打包到您的 搜索路径 这是不建议的,但仍然是可能的。

    from .msg1 import msg1
    from .msg2 import msg2
    from .msg3 import msg3
    

    还有一种方法你也可以这么做

    import sys
    sys.path.append(r'C:\Users\MyName\Desktop\Info') # Or you could os module to get dynamically
    
    from msg1 import msg1
    from msg2 import msg2
    from msg3 import msg3
    

    虽然更好的方法是这样

    import os
    import sys
    dir = os.path.join(os.getcwd(),'Info')
    sys.path.append(dir)
    

    如果你想让这些改变永久化,也就是说不添加 每次,您都可以将路径导出或添加到python的环境变量中,它将自动获取该路径。

        2
  •  0
  •   Suresh    7 年前

    您将使用以下语法导入到\uuu init \uuuuuy.py中:

    __初始值

    from Info.msg1 import msg1
    from Info.msg2 import msg2
    from Info.msg3 import msg3
    

    或者您可以使用:

    from .msg1 import msg1
    from .msg2 import msg2
    from .msg3 import msg3
    

    希望这能解决你的问题。