我有一个简单的 Django 项目(即 this 教程中的项目)。
树的主要部分如下所示:
.
├── env
├── proj
│ ├── proj
│ │ ├── __init__.py
│ │ ├── settings.py
│ │ ├── urls.py
│ │ └── wsgi.py
│ ├── api
│ │ ├── __init__.py
│ │ ├── serializers.py
│ │ ├── urls.py
│ │ └── views.py
│ ├── base
│ │ ├── __init__.py
│ │ ├── admin.py
│ │ ├── apps.py
│ │ ├── models.py
│ │ ├── tests.py
│ │ └── views.py
| ├── db.sqlite3
│ └── manage.py
└── README.md
在教程中,外部
proj
文件夹是根目录。from base.models import Item
settings.py中打印
sys.path
时,它包含 /path/to/wrapper/proj
。这就是我所做的:
/path/to/wrapper
.parent
附加到settings.py中的
BASE_DIR
BASE_DIR = Path(__file__).resolve().parent.parent.parent
)proj.
添加到导入from proj.base.models import Item
)但这行不通:
ModuleNotFoundError: No module named 'proj.base'
settings.py中打印
sys.path
时,它仍然包含 /path/to/wrapper/proj
。设置中内容根的唯一影响似乎是语法突出显示。
由于我更改了它,PyCharm 认为带有前缀
proj.
的导入是正确的。
我已经在另一个项目中使用了这个结构(参见here)。
在那里它起作用了。但我没有看到这两个项目之间的区别。
编辑: 在评论中建议更改源根目录。
但该更改没有任何效果(除了根文件夹现在是蓝色的)。
(显然,除非另有指定,否则源根隐式是内容根。)