(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