导入模块无法正常工作

时间:2017-08-01 08:17:00

标签: python django python-3.x module

我有一个django(但我觉得这里也不是很冒险)项目,我尝试添加我之前做过的脚本。所以我把它放在我的项目的一个子目录中,我有这个结构(我知道它现在有点乱,但它不会完全像那样)

enter image description here

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'的模块

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

4 个答案:

答案 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