首页 > 解决方案 > 项目外的 Django manage.py

问题描述

有没有一种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')

标签: pythondjango

解决方案


要启用import api而不是import backend.api,您需要将父目录添加backend到 python 路径。

import sys
sys.path.append('/path/to/project/backend')

manage.py如果是 in ,您也可以使用相对路径/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__.pybackend


推荐阅读