【问题标题】:get error when trying to access a file present in other directory尝试访问其他目录中存在的文件时出错
【发布时间】:2021-09-21 21:07:40
【问题描述】:

请查看下图以查看项目目录结构。我有一个名为 UI 的根目录,其中包含 2 个名为 test1 和 test2 的子目录。我在 test2 目录中有一个名为 C.py 的文件,它需要 teste1 中的 A.py 中存在的函数。

当我尝试从 UI.test1.A 导入 Atest 访问包时出现错误。如您所见,我添加了 init.py(空文件),但我仍然收到模块未找到错误

A.py
class Atest:

def printA(self):
    print("A invoked")

从 root 运行时出现同样的错误

【问题讨论】:

    标签: python package


    【解决方案1】:

    您正在尝试从 UI/test2 运行它。你应该在树丛中更高或使用完整路径

    【讨论】:

    • 你的意思是从根目录运行它吗?
    • 我尝试从上一层和顶部(根)运行它,但我仍然得到同样的错误
    • 我会说 UI 中的一个文件夹“向上”
    • 我试过了,但我仍然得到 No module named 'test_ui'
    • 尝试从 UI 调用:``` from test1.A import Atest ``
    【解决方案2】:

    尝试使用这个 sn-p。

    import sys
    sys.path.insert(1, '../')
    

    【讨论】:

      【解决方案3】:

      您正在子目录 (~/UI/test2) 中运行脚本,并且导入尝试在该目录下查找 UI 模块,即您传递给 python 的脚本所在的文件夹。 __main__ 入口点应该始终位于项目的根目录,这样您就不会因为必须附加到路径而混淆其他导入。

      你可以看到python可以找到包的地方:

      import sys
      
      print(sys.path)
      

      【讨论】:

      • 嘿,我尝试从 root 运行它,但我得到了同样的错误
      猜你喜欢
      • 1970-01-01
      • 2020-07-10
      • 1970-01-01
      • 1970-01-01
      • 2022-06-13
      • 2016-09-26
      • 1970-01-01
      • 2018-03-09
      • 2016-03-03
      相关资源
      最近更新 更多