Как пропустить системные зависимости во время процесса блокировки Pipenv при использовании Dependabot?Python

Программы на Python
Ответить
Anonymous
 Как пропустить системные зависимости во время процесса блокировки Pipenv при использовании Dependabot?

Сообщение Anonymous »

Я использую Dependabot для обновления своих пакетов Python, но в последнее время он стал замедляться и обновляться не так часто, как хотелось бы.
После изучения Проблема: я обнаружил, что определенный пакет Python (gdal) вызывает тайм-аут во время процесса блокировки Pipenv. Для этого пакета требуются системные зависимости, которые недоступны Dependabot. Вот обратная трассировка:

Код: Выделить всё

updater | 2025/01/13 05:50:33 INFO  Handled error whilst updating werkzeug:
dependency_file_not_resolvable {:message=>"Pipenv failed to install \"gdal~=3.6.2\".
This could be caused by missing system dependencies that can't be installed by Dependabot
or required installation flags.\n\nError output from running \"pipenv lock\"
:\nERROR:pip.subprocessor:python setup.py egg_info exited with 1\nTraceback
(most recent call last):\n  File \"/usr/local/.pyenv/versions/3.11.9/lib/python3.11/site-packages/pipenv/patched/pip/_internal/operations/build/metadata_legacy.py\", line 64,
in generate_metadata\n    call_subprocess(\n  File \"/usr/local/.pyenv/versions/3.11.9/lib/python3.11/site-
packages/pipenv/patched/pip/_internal/utils/subprocess.py\", line 224, in call_subprocess\n    raise
error\npipenv.patched.pip._internal.exceptions.InstallationSubprocessError: python setup.py egg_info
exited with 1\nThe above exception was the direct cause of the following exception:\nTraceback
(most recent call last):\n  File \"/usr/local/.pyenv/versions/3.11.9/lib/python3.11/site-packages
/pipenv/utils/resolver.py\", line 443, in resolve\n    results = resolver.resolve(constraints,
check_supported_wheels=False)\n
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/usr/local/.pyenv/versions/3.11.9/lib/python3.11/site-packages/pipenv/patched/pip/
_internal/resolution/resolvelib/resolver.py\", line 95, in resolve\n    result = self._result = resolver.resolve(\n
^^^^^^^^^^^^^^^^^\n  File \"/usr/local/.pyenv/versions/3.11.9/lib/python3.11/site-
packages/pipenv/patched/pip/_vendor/resolvelib/resolvers.py\", line 546, in resolve\n
state = resolution.resolve(requirements, max_rounds=max_rounds)\n            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File
\"/usr/local/.pyenv/versions/3.11.9/lib/python3.11/site-packages/pipenv/patched/pip/_vendor
/resolvelib/resolvers.py\", line 397, in resolve\n    self._add_to_criteria(self.state.criteria, r, parent=None)
\n  File \"/usr/local/.pyenv/versions/3.11.9/lib/python3.11/site-packages/pipenv/patched/pip/_vendor/
resolvelib/resolvers.py\", line 173, in _add_to_criteria\n    if not criterion.candidates:\n  File
\"/usr/local/.pyenv/versions/3.11.9/lib/python3.11/site-packages/pipenv/patched/pip/_vendor/
resolvelib/structs.py\", line 156, in __bool__\n    return bool(self._sequence)
\n^^^^^^^^^^^^^^^^^^^^\n  File \"/usr/local/.pyenv/versions/3.11.9/lib/python3.11/site-
packages/pipenv/patched/pip/_internal/resolution/resolvelib/found_candidates.py\", line 155,
in __bool__\n    return any(self)\n           ^^^^^^^^^\n  File \"/usr/local/.pyenv/versions/
3.11.9/lib/python3.11/site-packages/pipenv/patched/pip/_internal/resolution/resolvelib/
found_candidates.py\", line 143, in \n    return (c for c in iterator if id(c)
not in self._incompatible_ids)\n
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/usr/local/.pyenv/versions/3.11.9/lib/python3.11/site-
packages/pipenv/patched/pip/_internal/resolution/resolvelib/found_candidates.py\",
line 47, in _iter_built\n    candidate = func()\n                ^^^^^^\n  File \"/usr/local/
.pyenv/versions/3.11.9/lib/python3.11/site-packages/pipenv/patched/pip/_internal/
resolution/resolvelib/factory.py\", line 182, in _make_candidate_from_link\n
base:  Optional[BaseCandidate] = self._make_base_candidate_from_link(\n                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/usr/local/.pyenv/versions/
3.11.9/lib/python3.11/site-packages/pipenv/patched/pip/_internal/resolution/resolvelib/
factory.py\", line 228, in _make_base_candidate_from_link\n
self._link_candidate_cache = LinkCandidate(\n ^^^^^^^^^^^^^^\n
File \"/usr/local/.pyenv/versions/3.11.9/lib/python3.11/site-packages/pipenv/patched/pip/_internal/resolution/resolvelib/candidates.py\",
line 294, in __init__\n    super().__init__(\n  File \"/usr/local/.pyenv/versions/3.11.9/lib/python3.11/site-packages/pipenv/patched/pip/_internal/resolution/resolvelib/candidates.py\", line 157,
in __init__\n    self.dist = self._prepare()\n                ^^^^^^^^^^^^^^^\n  File
\"/usr/local/.pyenv/versions/3.11.9/lib/python3.11/site-packages/pipenv/patched/pip/_internal/resolution/resolvelib/candidates.py\", line 223,
in _prepare\n    dist = self._prepare_distribution()\n
^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/usr/local/.pyenv/versions/3.11.9/lib/python3.11/site-packages/pipenv/patched/pip/_internal/resolution/resolvelib/candidates.py\", line 305,
in _prepare_distribution\n    return preparer.prepare_linked_requirement(self._ireq, parallel_builds=True)\n
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File
\"/usr/local/.pyenv/versions/3.11.9/lib/python3.11/site-packages/pipenv/patched/pip/
_internal/operations/prepare.py\", line 525, in prepare_linked_requirement\n
return self._prepare_linked_requirement(req, parallel_builds)\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File
\"/usr/local/.pyenv/versions/3.11.9/lib/python3.11/site-packages/pipenv/patched/pip
/_internal/operations/prepare.py\", line 640, in _prepare_linked_requirement\n    dist = _get_prepared_distribution(\n
^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/usr/local/.pyenv/versions/3.11.9/lib/python3.11/site-packages/pipenv/patched/pip/_internal/operations/prepare.py\", line 71, in _get_prepared_distribution\n
abstract_dist.prepare_distribution_metadata(\n  File \"/usr/local/.pyenv/versions/3.11.9/lib/python3.11/site-
packages/pipenv/patched/pip/_internal/distributions/sdist.py\", line 67, in prepare_distribution_metadata\n
self.req.prepare_metadata()\n  File \"/usr/local/.pyenv/versions/3.11.9/lib/python3.11/site-
packages/pipenv/patched/pip/_internal/req/req_install.py\", line 586, in prepare_metadata
\n    self.metadata_directory = generate_metadata_legacy(\n
^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/usr/local/.pyenv/versions/3.11.9/lib/python3.11/site-
packages/pipenv/patched/pip/_internal/operations/build/metadata_legacy.py\", line 71, in generate_metadata\n
raise MetadataGenerationFailed(package_details=details) from
error\npipenv.patched.pip._internal.exceptions.MetadataGenerationFailed: metadata generation failed"}
И файл конфигурации dependabot.yml

Код: Выделить всё

version: 2
updates:
- package-ecosystem: pip
directory: "/"
schedule:
interval: daily
time: "04:00"
open-pull-requests-limit: 10
allow:
- dependency-type: direct
- dependency-type: indirect
Я пытался пропустить зависимость через файл dependabot.yml, но, к сожалению, он не пропускает зависимости во время процесса блокировки Pipenv, который выполняет Dependabot. Я также пытался заблокировать версию, но, поскольку ошибка возникает во время процесса блокировки Pipenv, это тоже не работает.
Есть ли способ настроить Pipfile для пропуска системных зависимостей во время создания файла блокировки или указать Dependabot, чтобы пропустить их?

Подробнее здесь: https://stackoverflow.com/questions/793 ... ing-depend
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»