Как изменить корневой каталог проекта Python?
У меня есть простой проект Django (а именно проект из этого учебника).
Основная часть дерева выглядит следующим образом:
.
├── 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
является корневой.
В api/views.py находится следующий импорт: from base.models import Item
Когда я печатаю sys.path
в settings.py, он содержит /path/to/wrapper/proj
.
Но я бы хотел, чтобы моя корневая папка была на один уровень выше.
Вот что я сделал:
- перейдите в Settings > Project structure и измените content root на
/path/to/wrapper
- добавьте еще один
.parent
кBASE_DIR
в settings.py
(теперьBASE_DIR = Path(__file__).resolve().parent.parent.parent
) - перенести
proj.
в imports
(теперьfrom proj.base.models import Item
)
Но это не работает: ModuleNotFoundError: No module named 'proj.base'
Когда я печатаю sys.path
в settings.py, он по-прежнему содержит /path/to/wrapper/proj
.
Откуда это взялось? И как я могу это изменить?
Единственное влияние корня содержимого в настройках, похоже, на подсветку синтаксиса.
С тех пор как я изменил это, PyCharm считает импорт с префиксом proj.
правильным.
EDIT: В одном из комментариев было рекомендовано изменить корень источника.
Но это изменение не дало никакого эффекта (за исключением того, что корневая папка стала синей).
(По-видимому, корень источника неявно является корнем содержимого, если не указано иное.)
Я не нашел способа сделать именно то, что задумал. Но, вероятно, это все равно была плохая идея.
Спасибо @jhole за подсказку о корнях исходников.
Хорошее решение - использовать обертку как content root,
а внешнюю папку proj
как корень источника.
(Я не знал, что эти две папки могут быть раздельными)