有没有一种方法可以使manage.py
位于Django项目目录之外,而不必将所有导入都更改为from backend.<app>.<module> import ...
?
├── project
│ ├── api
│ ├── frontend
│ ├── project
│ ├── manage.py
│ ├── Pipfile
│ ├── Pipfile.lock
├── project
│ ├── backend
│ │ ├── api
│ │ ├── project
│ │ ├── __init__.py
│ ├── frontend
│ ├── manage.py
│ ├── Pipfile
│ ├── Pipfile.lock
将Django项目移至后端目录并用下面的行修改manage.py
后,正如预期的那样,尝试运行服务器时会有ModuleNotFoundError
。
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'backend.project.settings')
答案 0 :(得分:1)
要启用import api
而不是import backend.api
,需要将父目录backend
添加到python路径。
import sys
sys.path.append('/path/to/project/backend')
如果manage.py
位于/path/to/project/
中,您也可以使用相对路径:
import sys
sys.path.append('backend')
然后您应该使用
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'project.settings')
进行更改后,请确保将api
导入所有地方。当将相同的模块导入不同的位置时,混合使用import api
和import backend.api
可能会导致问题。如果您要停止导入backend/__init__.py
,则可以删除backend
。