在runserver期间导入django app中的错误以及与__init__.py相关的测试

时间:2017-11-21 14:15:37

标签: python django

我使用的是django 1.11.7,这是我的项目结构:

> project1
    > app1
        >__init__.py
        >views.py
        >models.py
        >tests
            >__init__.py
            >test_*.py
> project2
    > app1
        >__init__.py
        >views.py
        >models.py
        >tests
            >__init__.py
            >test_*.py

我试图将project1.app1中的模型导入到project2.app1中,甚至在使用sys和os包提供正确的路径之后,当我运行server时它也不会起作用。我找到了一个解决方案,据说可以在两个地方的项目级创建init文件。

所以现在项目结构如下:

> project1
> __init__.py
    > app1
        >__init__.py
        >views.py
        >models.py
        >tests
            >__init__.py
            >test_*.py
> project2
> __init__.py
    > app1
        >__init__.py
        >views.py
        >models.py
        >tests
            >__init__.py
            >test_*.py

我可以从浏览器运行我的应用程序。然后我运行了我的单元测试,再次无法从其他项目中找到模型。在删除最近添加的init文件(恢复到原始项目结构)时,未引发导入错误。是否有其他解决方案,我可以运行服务器和测试,而不会因为项目级初始化文件的存在/缺失而导致应用程序抛出导入错误?

修改 我使用以下代码进行导入

import sys
import os
sys.path.append(os.path.abspath(os.path.join(__file__,'../../../')))
print sys.path, '\n\n'
from project1.app1.models import UserModel

导入抛出错误:

ImportError: No module named project1.app1.models

0 个答案:

没有答案