Как лучше импортировать модуль из git?

Ссылка скопирована
1 ответ

Сейчас ситуация такая: мне нужно в модуле подгружать пулл реквест, который исправляет нужные мне вещи, но он открыт

Мой requirements.txt:

civitai @ git+https://github.com/civitai/civitai-python.git@refs/pull/13/head

По вводным: оригинальный пул реквест:https://github.com/civitai/civitai-python/pull/13
Ошибка:

backend | Traceback (most recent call last): backend | File "/app/backend/clients/imgai.py", line 1, in <module> backend | import civitai backend | File "/usr/local/lib/python3.11/site-packages/civitai/__init__.py", line 6, in <module> backend | from .services.async_Jobs_service import ( backend | File "/usr/local/lib/python3.11/site-packages/civitai/services/async_Jobs_service.py", line 8, in <module> backend | from ..models import * backend | File "/usr/local/lib/python3.11/site-packages/civitai/models/__init__.py", line 1, in <module> backend | from .AIR import * backend | ModuleNotFoundError: No module named 'civitai.models.AIR'
Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Web-разработка Ответ

Импортировать Python-модуль из pull request можно через pip requirement на git-ссылку, но важно указать правильную ссылку и понимать, что это нестабильная зависимость. Если PR изменится, переедет или будет удалён, сборка может сломаться.

Формат в requirements.txt обычно такой:

civitai @ git+https://github.com/civitai/civitai-python.git@refs/pull/13/head

civitai @ git+https://github.com/civitai/civitai-python.git@refs/pull/13/head

Если пакет не ставится, проверьте, что в репозитории есть нормальный pyproject.toml или setup.py, и что имя пакета совпадает. Иногда надо ставить не имя модуля, а имя distribution-пакета, указанное в pyproject.

Более надёжный вариант - зависеть не от PR ref, а от конкретного commit hash:

civitai @ git+https://github.com/civitai/civitai-python.git@abcdef1234567890

civitai @ git+https://github.com/civitai/civitai-python.git@abcdef1234567890

Так сборка будет повторяемой. PR-ветка может обновляться, а commit hash останется тем же.

Если нужно временно использовать свою правку, лучше сделать fork:

civitai @ git+https://github.com/yourname/civitai-python.git@fix-needed-branch

civitai @ git+https://github.com/yourname/civitai-python.git@fix-needed-branch

После установки проверьте, откуда реально взялся пакет:

pip show civitai
python -c "import civitai; print(civitai.__file__)"

pip show civitai python -c "import civitai; print(civitai.__file__)"

Если dependency resolver тянет старую версию из PyPI, очистите окружение и ставьте в чистый venv:

python -m venv .venv
.venvScriptsactivate
pip install -U pip
pip install -r requirements.txt

python -m venv .venv .venvScriptsactivate pip install -U pip pip install -r requirements.txt

Для production я бы не оставлял зависимость на refs/pull. Это нормально для проверки гипотезы, но для стабильной сборки используйте fork/branch под вашим контролем или конкретный commit. Когда PR смержат, вернитесь на обычную release-версию пакета.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно