Nano Hash - криптовалюты, майнинг, программирование

PIP случайным образом дает сбой «Не удалось найти версию, удовлетворяющую требованиям» с теми же требованиями.txt

В рамках нашего тестирования CI мы устанавливаем virtualenv с некоторыми пакетами pip из файла с постоянными требованиями.txt.

этот процесс установки время от времени случайным образом завершается сбоем без видимой причины, поскольку файл requirements.txt не изменяется. И каждый раз для другого случайного пакета.

CI находится на машине AWS, поэтому я не думаю, что это может быть проблема с Интернетом.

Сбой выглядит примерно так (с ошибкой другого пакета):

Collecting django-rest-auth==0.9.3 (from -r requirements.txt (line 7))
Could not find a version that satisfies the requirement django-rest-auth==0.9.3 (from -r requirements.txt (line 7)) (from versions: )
No matching distribution found for django-rest-auth==0.9.3 (from -r requirements.txt (line 7))

Or

Collecting py>=1.5.0 (from pytest->-r requirements.txt (line 15))
Could not find a version that satisfies the requirement py>=1.5.0 (from pytest->-r requirements.txt (line 15)) (from versions: )
No matching distribution found for py>=1.5.0 (from pytest->-r requirements.txt (line 15))

РЕДАКТИРОВАТЬ: попытался добавить --timeout 30 --retries 15, который, похоже, ничего не изменил

14.06.2019

  • Попробуйте также добавить флаг --no-cache-dir и посмотрите, поможет ли это 25.06.2019

Ответы:


1

(from versions: ) - большая подсказка. Он взят из этой строки в исходный код пипа. Тот факт, что после versions: ничего не идет, означает, что pip не смог найти ни одной версии djanto-rest-auth в индексе pypi. Не обращайте внимания на версию, которую запрашивает ваш requirements.txt. Этот чек приходит позже.

Вот как должен выглядеть versions:, когда вы пытаетесь установить что-то, что не может быть найдено:

> pip install django-rest-auth==29.42  # ridiculous version that won't be found
Error: Could not find a version that satisfies the requirement django-rest-auth==29.42
(from versions: 0.9.4.macosx-10.14-intel, 0.1, 0.2, 0.2.1, 0.2.2, 0.2.3, 0.2.4, 
0.2.5, 0.3.0, 0.3.1, 0.3.2, 0.3.3, 0.3.4, 0.4.0, 0.5.0, 0.6.0, 0.7.0, 0.8.0,
0.8.1, 0.8.2, 0.9.0, 0.9.1, 0.9.2, 0.9.3, 0.9.5)

Единственный способ, которым versions: может быть пустым, — это если подпрограмма >find_all_candidates возвращает пустой список. find-all-candidates должен вернуть список всех версий пакета, выпущенных на pypi.org.

Я не знаю, почему эта процедура случайным образом возвращает пустой список в вашем поле CI, но у меня есть подозрение, что это связано с код, который очищает https://pypi.org/simple/django-rest-auth/ для ссылок. Возможно, время от времени он возвращает пустую HTML-страницу.

Вот некоторые вещи, которые вы можете сделать для отладки

  • Запустите pip с флагом --verbose. Это активирует некоторую регистрацию URL-адресов и ссылок, которые могут быть полезны.
  • ssh на свой сервер CI и найдите site-packages/pip/_internal/index.py. Отредактируйте его и добавьте больше журналов, чтобы облегчить отладку. Я бы начал с регистрации содержимого HTML, которое он получает с pypi.org.
  • если вам повезет и вы найдете способ повторить проблему, используйте pdb для отладки pip на вашем сервере CI.

Вот пример дополнительной регистрации, которую вы получаете с --verbose. Действительно любопытно, как это выглядит, когда происходит ваш сбой:

Collecting django-rest-auth==29.42
-------------------------------------------------------
  1 location(s) to search for versions of django-rest-auth:
  * https://pypi.org/simple/django-rest-auth/
  Getting page https://pypi.org/simple/django-rest-auth/
  Looking up "https://pypi.org/simple/django-rest-auth/" in the cache
  Request header has "max_age" as 0, cache bypassed
  Starting new HTTPS connection (1): pypi.org:443
  https://pypi.org:443 "GET /simple/django-rest-auth/ HTTP/1.1" 200 2467
  Updating cache with response from "https://pypi.org/simple/django-rest-auth/"
  Caching due to etag
  Analyzing links from page https://pypi.org/simple/django-rest-auth/
    Found link https://files.pythonhosted.org/packages/c8/ff/cffe8cb7961a1665f20115adb035d23a6b1cb08a2a6c1d6de802b13cdcc9/django-rest-auth-0.1.tar.gz#sha256=fcb9feced7f066c92a5f29f2930609316095a7abe3806e09c3d63c36c3607780 (from https://pypi.org/simple/django-rest-auth/), version: 0.1
    Found link https://files.pythonhosted.org/packages/af/d2/5d37d3f1c7055284b969e2de8eaf7d7dc16b51fba94f3325d92d053e12a8/django-rest-auth-0.2.tar.gz#sha256=04ae1a5d991692293ec95a10b517bdb26b41823a645400dc0b899d9f538013b9 (from https://pypi.org/simple/django-rest-auth/), version: 0.2
    Found link https://files.pythonhosted.org/packages/46/87/816fcc68a4552916cb82eef40dfd1bd752f831a329e927b96b7f9c6c0db7/django-rest-auth-0.2.1.tar.gz#sha256=3306e739bb8f34d47285c9e1616f75a9d8b4f6985102d68509d5aec5af62c760 (from https://pypi.org/simple/django-rest-auth/), version: 0.2.1
... about 20 more of these

Удачи. Извините, я не мог дать вам точное решение.

01.07.2019

2

У меня есть эта проблема, когда у меня сильная зависимость, поэтому я обновил тайм-аут для pip, и проблема решена. то есть мой .pip/pip.conf имеет тайм-аут 30 секунд

[global]
timeout = 30
14.06.2019

3

Проблема: проблема может быть связана с вашей версией Python и других библиотек. Возможно, вашему колесу django требуется какая-то другая библиотека, которая установлена ​​в вашей среде anaconda, но не соответствует версиям. когда вы используете команду pip, просто попробуйте загрузить колесо, не заботясь о версии, а если версия не соответствует, просто выдайте нам ошибку.

Попробуйте использовать команду conda, потому что команда conda обновит вашу версию в соответствии с требованиями. когда вы выполняете команду conda, она загружает библиотеку для всех сред, которые вы используете в навигаторе anaconda. Но Pip установит только ту библиотеку, из которой вызывается команда pip среды.

Решение: попробуйте установить эту библиотеку с помощью команды conda, например

conda install django-rest-auth==0.9.3

Эта команда поможет вам решить ошибку версии.

27.06.2019

4

Прежде всего, это не редкость, чтобы получить ошибку. Во-вторых, случайный модуль, который он устанавливает, находится в файле requirements.txt модуля в вашем файле requirements.txt.

Решение. Сначала выполните поиск модуля в Google. Затем перейдите на сайт модуля и установите его. Это может занять много времени, но наберитесь терпения!

30.06.2019
  • Это единственные две ошибки? Если ответ да, вам следует попробовать использовать командную строку администратора и повторить попытку. 01.07.2019
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..