我使用的是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