【问题标题】:Parent module '' not loaded, cannot perform relative import父模块''未加载,无法执行相对导入
【发布时间】:2018-02-23 16:57:04
【问题描述】:

这是项目结构。

--KP
   --app
       --api
           --views
                --mpg.py
                --gtt.py

mpg.py:

def cmcid():
     .....
     .....

gtt.py:

from .mpg import cmcid

def main():
    variable = cmcid()
if __name__ == "__main__":
    main()

当我从 views 目录运行时,即 kp/app/api/views$python gtt.py

我得到一个错误:

父模块''未加载,无法执行相对导入

感谢任何帮助。谢谢..

【问题讨论】:

    标签: python django python-3.x django-views


    【解决方案1】:

    您可能错过了您的视图目录中的__init__.py 文件(它可以只是一个空文件)。

    添加这个文件,它会将你的目录变成一个 python 包,导入应该可以工作

    请注意,在父目录中也是必需的。


    另一个可能的原因是您在文件中使用了 Django“机器”,因此可能无法直接作为 python 文件运行。

    如果您需要编写与您的 django 应用程序交互的 python 脚本,您需要创建一个将使用python manage.py got 执行的 django 命令

    您的 gtt.py 文件需要位于 django 应用程序的 management\commands 子模块中。

    它必须具有以下结构

    from django.core.management.base import BaseCommand
    from path.to.mpg import cmcid
    
    class Command(BaseCommand):
        help = 'Your custom command'
    
        def handle(self, *args, **options):
            variable = cmcid()
    

    有关命令的更多详细信息,请参阅 Django 文档 https://docs.djangoproject.com/en/2.0/howto/custom-management-commands/

    【讨论】:

    • 是的,我的视图目录中有 init.py
    • 你用的是哪个版本的python?
    • 我使用的是 python 3.5
    • 此文件中可能有问题导致 ImportError。如果你用python将它作为主模块执行,你会看到文件是否正确
    • mpg.py mpg.py 使用我的模型和序列化程序没有错误。这会导致错误吗?
    猜你喜欢
    • 2018-06-01
    • 2016-02-23
    • 2015-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-05
    • 1970-01-01
    • 2021-12-04
    相关资源
    最近更新 更多