Использование нескольких рабочих пространств с django без PYTHONPATH

Иногда мне нужно запустить наш проект с django backand в нескольких рабочих пространствах на разных версиях git. В процессе работы я обнаружил, что django сильно полагается на PYTHONPATH и, вероятно, из-за этого смешивает рабочие пространства. Когда я вызываю, например, python manger.py runserver, я вижу, что исходники берутся из другого рабочего пространства. Напротив, если я удалю оба рабочих пространства из PYTHONPATH (а это было единственное, что там было), то вышеприведенная команда завершится с печально известной ошибкой:

File "/opt/homebrew/Cellar/python@3.11/3.11.0/Frameworks/Python.framework/Versions/3.11/lib/python3.11/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<frozen importlib._bootstrap>", line 1206, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1178, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1142, in _find_and_load_unlocked
ModuleNotFoundError: XYZ

Для меня это выглядит так, как будто он не может найти модули вне django, который был получен другим способом из пути PYTHONPATH. Поскольку все наши модули, включая тот, о котором сообщается, что он отсутствует, находятся на том же уровне, что и django, я попытался расширить sys.path в manage.py следующим образом:

import pathlib


def main():
    current_dir = pathlib.Path().resolve()
    [sys.path.append(str(x)) for x in current_dir.parent.iterdir() if
     x.is_dir() and not x.name.startswith(".")]

Хотя я вижу, что путь расширяется, вышеуказанное исключение все равно возникает.

Любая помощь по использованию нескольких рабочих пространств, содержащих django без PYTHONPATH, будет высоко оценена, спасибо заранее.

Вернуться на верх