无法将自定义模块导入其他应用程序(Django)

时间:2015-10-27 03:12:38

标签: python django

我有以下项目树 -

Project Tree

以下是我的错误日志:Error Log

执行命令时出现

错误 - python manage.py syncdb

Test1>settings.py

models_py for user_profile:user_profile>models.py

models.py for tweets:tweets>models.py

1 个答案:

答案 0 :(得分:1)

这是因为您尝试从UserM模块导入user_profile而不是user_profile.models。您可以将所有内容导入user_profile模块__init__.py,如下所示:

# add this to user_profile/__init__.py
from .models import *

或使用import语句如下:

from user_profile.models import UserM

<强>解释

user_profile是一个目录,python docs建议:

  

需要 init .py文件才能使Python将目录视为包含包;这样做是为了防止具有通用名称的目录(例如字符串)无意中隐藏稍后在模块搜索路径上发生的有效模块。在最简单的情况下, init .py可以只是一个空文件,但它也可以执行包的初始化代码或设置 all 变量,稍后将对此进行描述。 p>

所以user_profile是一个目录而不是一个模块。通过向其添加__init__.py文件,您可以让python知道这是一个包含的包。但是在from user_profile import UserM中你没有指定包含UserM类的模块,因此python将在包含的包__init__.py中查找它。

使用上面建议的解决方案,您可以将UserM类导入__init__.py文件,其中python根据from user_profile import ..语句查找它,或者您更改import语句并指定包含您的类的模块,将其修改为from user_profiles.modesl import UserM

相关问题