代码之家  ›  专栏  ›  技术社区  ›  PhantomSucksAtCoding

Python不导入同一目录中的文件

  •  0
  • PhantomSucksAtCoding  · 技术社区  · 2 年前

    所以我的目录看起来像这样: bleh

    文件 CreatePage.py 包含import语句 from Page import * 但在运行时会抛出以下错误

    No module named 'Page'
      File "D:\My Stuff\School\CS\ViewModel\CreatePage.py", line 1, in <module>
        from Page import *
      File "D:\My Stuff\School\CS\View.py", line 2, in <module>
        from ViewModel.CreatePage import *
    ModuleNotFoundError: No module named 'Page'
    

    我试过了 import Page , from ViewModel.Page import * 也是,但它们也不起作用。

    我在这里做错了什么?

    1 回复  |  直到 2 年前
        1
  •  0
  •   tdelaney    2 年前

    我可以用复制类似的东西

    查看.py

    from ViewModel.CreatePage import *
    

    ViewModel/CreatePage.py

    from Page import *
    

    ViewModel/Page.py

    print("Page")
    

    运行方式: python3 View.py

    Traceback (most recent call last):
      File "/home/td/tmp/a/test/View.py", line 1, in <module>
        from ViewModel.CreatePage import *
      File "/home/td/tmp/a/test/ViewModel/CreatePage.py", line 1, in <module>
        from Page import *
    ModuleNotFoundError: No module named 'Page'
    

    这是通过将ViewModel/CreatePage.py更改为相对导入来修复的

    from .Page import *
    

    再次运行

    Page
    

    跑步 View.py 因为顶级脚本将其父目录添加到python模块搜索路径中。子目录,如 ViewModel 现在是的包 查看.py 包装相关进口开始发挥作用。