导入模块不起作用

新手上路,请多包涵

我有一个 django(但我认为它在这里也不相关)项目,我尝试在其中添加我以前做过的脚本。所以我把它放在我的项目的一个子目录中,并且我有这个结构(我知道现在有点乱,但它不会保持原样)

在此处输入图像描述

views.py 我想导入 main.py (特别是函数 excelToXml )。在互联网上搜索后,我发现我在 views.py 中复制的代码。如果我理解正确,它会将 first_page 的目录父目录添加到变量 $PATH 中,但是,每个子目录

CURRENT = os.path.dirname(os.path.abspath(__file__))
PARENT = os.path.dirname(CURRENT)
sys.path.append(PARENT)
from ExcelToXML.main import excelToXml

我还在 ExcelToXML 目录中创建了一个文件 __init.py_ _,该文件留空。

然而,即使我做了所有这些,当我运行 django 服务器时,我仍然会收到这个错误

文件“c:\Users\CRA\AppData\Local\Programs\Python\Python36-32\Lib\site-packages\django\bin\DevisVersOpen\DevisVersOpen\urls.py”,第 18 行,在模块中

从第一页导入视图

文件“c:\Users\CRA\AppData\Local\Programs\Python\Python36-32\Lib\site-packages\django\bin\DevisVersOpen\first_page\views.py”,第 13 行,在模块中

从 ExcelToXML.main 导入 excelToXml

ModuleNotFoundError:没有名为“ExcelToXML”的模块

我没有在互联网上找到任何我能理解的解决方案,所以我真的不知道如何解决这个问题

原文由 Peni 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 801
2 个回答

您的目录结构让我认为您应该尝试这样导入:

 from first_page.ExcelToXML.main import excelToXml

因为 ExcelToXML 在 first_page 模块下,所以它被视为 first_page 的子模块。

原文由 Cédric Julien 发布,翻译遵循 CC BY-SA 3.0 许可协议

检查此以了解有关什么是 init .py 文件的详细信息 init.py 的用途是什么?

init .py 文件应该存在于每个目录和子目录中,其类应该在导入时可见。在你的情况下,我怀疑父目录没有 init .py 文件。添加父目录下的文件,导入如下

导入 first_page.ExcelToXML

原文由 Rohith 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题