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

时间:2018-02-23 08:11:57

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

这是项目结构。

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

我收到错误:

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

感谢任何帮助。感谢..

1 个答案:

答案 0 :(得分:0)

您的视图目录中可能遗漏了__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 doc https://docs.djangoproject.com/en/2.0/howto/custom-management-commands/