Вопрос или проблема
У меня есть очень странная проблема, которую я не могу решить. Я использую poetry в качестве менеджера зависимостей в своем приложении, и до сих пор у меня не было с этим проблем. Однако я столкнулся с проблемой после добавления зависимости wordninja = "2.0.0"
. Я не могу сгенерировать файл блокировки. После выполнения команды poetry lock
я получаю ошибку failed to query /usr/local/bin/python3 with code -9
, что, судя по всему, указывает на какую-то ошибку OOM, но, насколько мне известно, этого здесь не происходит.
Я точно знаю, что если я удаляю эту зависимость, я могу заблокировать файл без проблем. Я пытался удалить файл блокировки, пересоздать виртуальное окружение и очистить весь кэш poetry, но безрезультатно. У кого-нибудь есть идеи, что это может быть.
Когда я запускаю команду в режиме подробного вывода, я получаю:
1 ~/Library/Application Support/pypoetry/venv/lib/python3.12/site-packages/virtualenv/discovery/py_info.py:381 in from_exe
379│
380│ env = os.environ if env is None else env
→ 381│ proposed = from_exe(cls, app_data, exe, env=env, raise_on_error=raise_on_error, ignore_cache=ignore_cache)
382│
383│ if isinstance(proposed, PythonInfo) and resolve_to_host:
RuntimeError
failed to query /usr/local/bin/python3 with code -9
at ~/Library/Application Support/pypoetry/venv/lib/python3.12/site-packages/virtualenv/discovery/cached_py_info.py:33 in from_exe
29│ env = os.environ if env is None else env
30│ result = _get_from_cache(cls, app_data, exe, env, ignore_cache=ignore_cache)
31│ if isinstance(result, Exception):
32│ if raise_on_error:
→ 33│ raise result
34│ logging.info("%s", result)
35│ result = None
36│ return result
37│
Ответ или решение
Проблема, с которой вы столкнулись при использовании Poetry с зависимостью wordninja = "2.0.0"
и ошибкой «failed to query /usr/local/bin/python3 with code -9», может быть вызвана несколькими факторами. Ниже представлены шаги для решения данной проблемы:
1. Проверка системных ресурсов
Ошибки с кодом -9 часто указывают на то, что процесс был завершен системой, возможно, из-за нехватки оперативной памяти (OOM). Проверьте использование ресурсов вашей системы:
- Откройте терминал и выполните команду:
free -m
или
top
Убедитесь, что у вас достаточно свободной оперативной памяти для завершения процесса.
2. Обновление Poetry
Убедитесь, что у вас установлена последняя версия Poetry. Вы можете обновить Poetry с помощью следующей команды:
poetry self update
3. Очистка кэша
Попробуйте очистить кэш Poetry, если ранее не было сделано:
poetry cache clear --all pypi
4. Проверка конфигурации pyproject.toml
Убедитесь, что в вашем pyproject.toml
файле нет конфликтов или опечаток. Обратите внимание на то, как указана версия wordninja
и совместимость с другими зависимостями.
5. Попробуйте другую версию Python
Иногда проблема может быть связана с конкретной версией Python. Если вы используете Python 3.12, попробуйте создать окружение с другой версией (например, 3.9 или 3.10):
poetry env use python3.10
Затем попробуйте снова выполнить команду poetry lock
.
6. Сгенерируйте lock-файл вручную
В качестве временного обходного пути, попробуйте удалить зависимость wordninja
, сгенерировать lock-файл, а затем добавить зависимость снова:
poetry remove wordninja
poetry lock
poetry add wordninja
7. Использование флага отладки
Запустите poetry lock
с флагом отладки для получения более подробной информации:
poetry lock -vvv
Изучите вывод, чтобы определить, на каком этапе возникает проблема.
8. Обратиться в сообщество
Если ни одно из вышеперечисленных решений не сработало, я рекомендую обратиться к сообществу Poetry. Обычно они могут предложить полезные рекомендации, основанные на опыте других пользователей:
Надеюсь, эти шаги помогут вам решить вашу проблему. Если проблема сохраняется, пожалуйста, предоставьте дополнительную информацию о конфигурации проекта и окружении, чтобы помочь с более глубоким анализом.