Не удалось найти версию, удовлетворяющую требованиям ‹package›

Я устанавливаю несколько пакетов Python в Ubuntu 12.04, используя следующий requirements.txt файл:

numpy>=1.8.2,<2.0.0
matplotlib>=1.3.1,<2.0.0
scipy>=0.14.0,<1.0.0
astroML>=0.2,<1.0
scikit-learn>=0.14.1,<1.0.0
rpy2>=2.4.3,<3.0.0

и эти две команды:

$ pip install --download=/tmp -r requirements.txt
$ pip install --user --no-index --find-links=/tmp -r requirements.txt

(первый загружает пакеты, а второй устанавливает их).

Процесс часто останавливается с ошибкой:

  Could not find a version that satisfies the requirement <package> (from matplotlib<2.0.0,>=1.3.1->-r requirements.txt (line 2)) (from versions: )
No matching distribution found for <package> (from matplotlib<2.0.0,>=1.3.1->-r requirements.txt (line 2))

который я исправляю вручную:

pip install --user <package>

а затем снова запустите вторую команду pip install.

Но это работает только для этого конкретного пакета. Когда я снова запускаю вторую команду pip install, процесс останавливается с жалобой на другой требуемый пакет, и мне нужно повторить процесс снова, то есть: установить новый требуемый пакет вручную (с помощью команды выше) и затем запустите вторую команду pip install.

До сих пор мне приходилось вручную устанавливать six, pytz, nose, и теперь он жалуется на необходимость mock.

Есть ли способ указать pip на автоматическую установку всех необходимых зависимостей, чтобы мне не приходилось делать это вручную одну за другой?

Добавить: это происходит только в Ubuntu 12.04 BTW. В Ubuntu 14.04 команды pip install, примененные к файлу requirements.txt, работают без проблем.


person Gabriel    schedule 31.08.2015    source источник
comment
Иногда ваш проект Django может зависеть от локальных пакетов brew. Дважды проверьте, что они установлены!   -  person James111    schedule 10.05.2016
comment
У меня была такая же проблема, с помощью 'python -m pip install flask' я смог ее установить   -  person Derick Daniel    schedule 09.04.2019


Ответы (15)


Этот подход (наличие всех зависимостей в каталоге, а не загрузка из индекса) работает только тогда, когда каталог содержит все пакеты. Поэтому каталог должен содержать все зависимости, а также все пакеты, от которых зависят эти зависимости (например, six, pytz и т. Д.).

Поэтому вам следует вручную включить их в requirements.txt (чтобы на первом этапе они были загружены явно) или вы должны установить все пакеты с помощью PyPI, а затем pip freeze > requirements.txt, чтобы сохранить список всех необходимых пакетов.

person Simeon Visser    schedule 31.08.2015
comment
Итак, единственный способ узнать, какие все требования - это freeze установленные пакеты в рабочей настройке, а затем добавить все там в requirements.txt файл? - person Gabriel; 31.08.2015
comment
@Gabriel: в настоящее время да, так как многие пакеты Python устанавливаются путем запуска файла setup.py, который содержит необходимые им зависимости. Это должно улучшиться, когда пакет Python станет файлами колес (pythonwheels.com), которые позволят вам собрать список всех необходимых пакетов. без выполнения произвольного кода в setup.py файлах. - person Simeon Visser; 31.08.2015
comment
Спасибо за объяснение Симеону. Еще одна вещь, если вы не возражаете: почему этого не происходит в Ubuntu 14.04, а в Ubuntu 12.04? - person Gabriel; 31.08.2015
comment
@Gabriel: Я не уверен - по моему опыту pip всегда прерывается, когда не может найти пакет для установки. При этом pip активно разрабатывается, так что, возможно, у вас есть версия, с которой я еще не работал. - person Simeon Visser; 01.09.2015
comment
@SimeonVisser, [колеса] позволяют вам собрать список всех необходимых пакетов без выполнения произвольного кода, интересно, поделитесь мыслями, как это сделать (к настоящему времени)? - person sschuberth; 02.05.2019
comment
В моем случае, если это кому-то поможет. Я получал точно такую ​​же ошибку, пытаясь запустить: pip3 install json. Затем понял, что json является частью cpython, поэтому его уже там не нужно было устанавливать - person camposer; 31.03.2021

Я установил python3, но мой python в / usr / bin / python все еще был старой версией 2.7

Это сработало (<pkg> было pyserial в моем случае):

python3 -m pip install <pkg>
person maw    schedule 09.10.2018
comment
это происходит, когда в setuptools есть python_requires='>=3.0' как требование - person Juan-Kabbali; 29.04.2020
comment
Спасибо! Это было именно то, что мне было нужно - person lizziepika; 20.11.2020
comment
простой способ проверить, применимо ли это к вам, - это увидеть, есть ли несоответствие каталогов между which python и which pip - person crypdick; 17.06.2021

Хотя это не совсем ответ на этот конкретный вопрос. Другие получили то же сообщение об этой ошибке.

Для тех, кто вроде меня изначально забыл -r: используйте pip install -r requirements.txt -r необходимо для команды.

Исходный ответ:

https://stackoverflow.com/a/42876654/10093070

person Chiel    schedule 18.09.2020
comment
Спасибо, @Chiel, мне тоже не хватало -r. - person Dev_mjm; 22.04.2021

После 2 часов поиска я нашел способ исправить это с помощью всего одной строки команды. Вам необходимо знать версию пакета (просто найдите версию ПАКЕТА).

Команда:

python3 -m pip install --pre --upgrade PACKAGE==VERSION.VERSION.VERSION
person Jagd_Panzer_E100    schedule 03.05.2018

Команда ниже работала для меня -

python -m pip install flask
person Derick Daniel    schedule 09.04.2019

Напоминаю, кому погуглите эту ошибку и заходите сюда.

Скажем, я получаю эту ошибку:

$ python3 example.py
Traceback (most recent call last):
  File "example.py", line 7, in <module>
    import aalib
ModuleNotFoundError: No module named 'aalib'

Поскольку там упоминается aalib, я решил попробовать aalib:

$ python3.8 -m pip install aalib
ERROR: Could not find a version that satisfies the requirement aalib (from versions: none)
ERROR: No matching distribution found for aalib

Но на самом деле это неправильное имя пакета, убедитесь, что pip search (служба отключена на момент написания) или в Google, либо выполните поиск на сайте pypi, чтобы получить точный название пакета:

введите описание изображения здесь

Затем установите успешно:

$ python3.8 -m pip install python-aalib
Collecting python-aalib
  Downloading python-aalib-0.3.2.tar.gz (14 kB)
...

Как заявил pip --help:

$ python3.8 -m pip --help
...
  -v, --verbose               Give more output. Option is additive, and can be used up to 3 times.

Чтобы иметь систематический способ выяснения основных причин, а не полагаться на удачу, вы можете добавить параметр -vvv команды pip, чтобы увидеть подробности, например:

$ python3.8 -u -m pip install aalib -vvv
User install by explicit request
Created temporary directory: /tmp/pip-ephem-wheel-cache-b3ghm9eb
Created temporary directory: /tmp/pip-req-tracker-ygwnj94r
Initialized build tracking at /tmp/pip-req-tracker-ygwnj94r
Created build tracker: /tmp/pip-req-tracker-ygwnj94r
Entered build tracker: /tmp/pip-req-tracker-ygwnj94r
Created temporary directory: /tmp/pip-install-jfurrdbb
1 location(s) to search for versions of aalib:
* https://pypi.org/simple/aalib/
Fetching project page and analyzing links: https://pypi.org/simple/aalib/
Getting page https://pypi.org/simple/aalib/
Found index url https://pypi.org/simple
Getting credentials from keyring for https://pypi.org/simple
Getting credentials from keyring for pypi.org
Looking up "https://pypi.org/simple/aalib/" 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/aalib/ HTTP/1.1" 404 13
[hole] Status code 404 not in (200, 203, 300, 301)
Could not fetch URL https://pypi.org/simple/aalib/: 404 Client Error: Not Found for url: https://pypi.org/simple/aalib/ - skipping
Given no hashes to check 0 links for project 'aalib': discarding no candidates
ERROR: Could not find a version that satisfies the requirement aalib (from versions: none)
Cleaning up...
Removed build tracker: '/tmp/pip-req-tracker-ygwnj94r'
ERROR: No matching distribution found for aalib
Exception information:
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/pip/_internal/cli/base_command.py", line 186, in _main
    status = self.run(options, args)
  File "/usr/lib/python3/dist-packages/pip/_internal/commands/install.py", line 357, in run
    resolver.resolve(requirement_set)
  File "/usr/lib/python3/dist-packages/pip/_internal/legacy_resolve.py", line 177, in resolve
    discovered_reqs.extend(self._resolve_one(requirement_set, req))
  File "/usr/lib/python3/dist-packages/pip/_internal/legacy_resolve.py", line 333, in _resolve_one
    abstract_dist = self._get_abstract_dist_for(req_to_install)
  File "/usr/lib/python3/dist-packages/pip/_internal/legacy_resolve.py", line 281, in _get_abstract_dist_for
    req.populate_link(self.finder, upgrade_allowed, require_hashes)
  File "/usr/lib/python3/dist-packages/pip/_internal/req/req_install.py", line 249, in populate_link
    self.link = finder.find_requirement(self, upgrade)
  File "/usr/lib/python3/dist-packages/pip/_internal/index/package_finder.py", line 926, in find_requirement
    raise DistributionNotFound(
pip._internal.exceptions.DistributionNotFound: No matching distribution found for aalib

Из приведенного выше журнала довольно очевидно, что URL https://pypi.org/simple/aalib/ 404 не найден. Затем вы можете угадать возможные причины, которые вызывают это 404, то есть неправильное имя пакета. Другое дело, что я могу изменить соответствующие файлы python модулей pip для дальнейшей отладки с помощью указанного выше журнала. Чтобы отредактировать файл .whl, вы можете использовать команду wheel для unpack и pack.

person Fruit    schedule 17.12.2020
comment
Да .... Я застрял на 2 часа, потому что неправильно набирал имя пакета. Спасибо за совет. - person Pavlos Ponos; 03.02.2021

Не всегда, но в некоторых случаях пакет уже существует. Например - getpass. Он не указан в "списке пунктов", но его можно импортировать и использовать:

введите описание изображения здесь

Если я попытаюсь установить getpass по протоколу pip, я получаю следующую ошибку: «Не удалось найти версию, удовлетворяющую требованию getpass»

person svinec    schedule 22.08.2018

Попробуйте установить Flask через powershell, используя следующую команду.

pip install --isolated Flask

Это позволит при установке избежать использования переменных среды и пользовательской конфигурации.

person user3782287    schedule 13.09.2017

Если вы столкнулись с этой проблемой на рабочем месте. Возможно, это решение для вас.

pip install -U <package_name> --user --proxy=<your proxy>
person pk786    schedule 19.02.2020

Я получил эту ошибку при установке awscli в Windows 10 в анаконде (python 3.7). Во время устранения неполадок я перешел к ответу https://stackoverflow.com/a/49991357/6862405, а затем к https://stackoverflow.com/a/54582701/6862405. Наконец обнаружил, что мне нужно установить библиотеки PyOpenSSL, cryptography, enum34, idna и ipaddress. После их установки (с помощью простой команды pip install) я смог установить awscli.

person Ankit Seth    schedule 23.12.2019

Установка pip с pypi.org.

pip install -U -i  https://pypi.org/simple package
person rosefun    schedule 02.03.2021

Просто следуйте требованиям, перечисленным на странице проекта: https://pypi.org/project/pgmagick/

person Ray Kim    schedule 05.11.2019

Та же ошибка при немного иных обстоятельствах на MacOs. По-видимому, версии setuptools после 45 могут выявить некоторые проблемы, и эта команда помогла мне решить эту проблему: pip3 install setuptools==45

person charles ross    schedule 19.01.2021

Используйте командную строку, а затем выберите Запуск от имени администратора.

Обновите версию pip

Чтобы обновить PIP, введите эту команду и нажмите Enter: -

python.exe -m pip install --upgrade pip

Вернитесь к пути Python C: \ Users \ Jack \ AppData \ Local \ Programs \ Python \ Python37 \ Scripts

Введите jupyter notebook

Вы будете перенаправлены на http://localhost:8888/undefined/tree - домашнюю страницу Jupyter

Надеюсь, это поможет !!!!!!!!!!!

person arup.dutta22    schedule 30.11.2018
comment
При чем тут jupyter ?? - person Martino; 10.02.2019
comment
как обновление pip может разрешить зависимости? Для этого требуются зависимости в вызывающем каталоге. - person Rizwan Javid; 15.03.2019

может помочь

sudo pip install wheel == 0.29.0

person Trisha Chetani    schedule 25.02.2018
comment
Извините .. Я не читаю на китайском или другом азиатском языке .. В будущем реферальная ссылка может сломаться ... пожалуйста, разместите здесь самое необходимое. Как опубликовал его некачественный ответ без контекста. - person ZF007; 25.02.2018
comment
Реферальная ссылка на японском языке ... пожалуйста, подумайте о том, чтобы делиться ссылками на английском языке - person pyjavo; 06.04.2018
comment
Код понятен всем разработчикам, и количество японского языка минимально и немного больше, чем заголовки, вводящие следующий код (переведите его, если это слишком сложно для вас, но вам действительно не нужно этого делать, чтобы понять, что происходит). Не должно возникнуть проблем с использованием других языков, кроме английского, при условии, что примеры кода ясны и не полностью зависят от используемого иностранного языка. - person rg88; 29.05.2018
comment
@ rg88 Это было бы хорошо для комментария (возможно, с оговоркой), но ответ о переполнении стека должен быть самодостаточным и убедительным. - person tripleee; 08.03.2019
comment
не имеет отношения к японскому, но при чем тут вопрос? - person KansaiRobot; 21.08.2020