项目外的Django manage.py

时间:2019-10-04 10:57:06

标签: python django

有没有一种方法可以使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')

1 个答案:

答案 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 apiimport backend.api可能会导致问题。如果您要停止导入backend/__init__.py,则可以删除backend