我有一个django(但我觉得这里也不是很冒险)项目,我尝试添加我之前做过的脚本。所以我把它放在我的项目的一个子目录中,我有这个结构(我知道它现在有点乱,但它不会完全像那样)
从 views.py 我想导入 main.py (特别是 excelToXml 功能)。在互联网上搜索后,我发现我在views.py中复制的代码。如果我正确地将其删除,它会将变量$ PATH添加到 first_page 的目录父级,尽管每个子目录
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行,在模块中
来自first_page导入视图
文件 “C:\用户\ CRA \应用程序数据\本地\程序\ Python的\ Python36-32 \ LIB \站点包\ Django的\ BIN \ DevisVersOpen \ first_page \ views.py” 第13行,在模块中
从ExcelToXML.main导入excelToXml
ModuleNotFoundError:没有名为'ExcelToXML'的模块
我没有找到任何我能在互联网上理解的解决方案,所以我真的不知道如何解决这个问题
答案 0 :(得分:5)
你的目录结构让我觉得你应该尝试像这样导入:
from first_page.ExcelToXML.main import excelToXml
因为ExcelToXML位于first_page模块下,所以它被视为first_page的子模块。
答案 1 :(得分:0)
好的,你好,你发现的解决方案是(我认为)一团糟,你应该阅读有关它的官方文档https://docs.python.org/3.6/tutorial/modules.html#packages。
简而言之,只需添加from .idea.main import excelToXml
即可。
如果它不起作用,请将.idea
文件夹重命名为idea
(不带点)并在views.py
这一行添加:from idea.main import excelToXml
答案 2 :(得分:0)
检查此内容,了解 init .py文件What is __init__.py for?
的详细信息init .py文件应存在于每个目录和子目录中,其类应该可见以便导入。在您的情况下,我怀疑父目录没有 init .py文件。在父目录中添加文件并按如下所示导入
导入first_page.ExcelToXML
答案 3 :(得分:0)
对于python,请更改导入文件的位置,然后导入。对我有用。
位置可以是:C:\python 3.8\Lib