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


153

Я устанавливаю несколько пакетов 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файлу, работают без проблем.


1
Иногда ваш проект Django может зависеть от локальных пакетов brew. Дважды проверьте, что они установлены!
James111

У меня была такая же проблема с 'python -m pip install flask', я смог ее установить
Freelancer

Ответы:


51

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

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


Итак, единственный способ узнать, каковы все требования, - freezeэто установить пакеты в рабочей настройке, а затем добавить все, что есть, в requirements.txtфайл?
Габриэль

2
@Gabriel: в настоящее время да, так как многие пакеты Python устанавливаются путем запуска setup.pyфайла, который содержит необходимые им зависимости. Это должно стать лучше, когда пакет Python станет файлами колес ( pythonwheels.com ), которые позволят вам собрать список всех необходимых пакетов без выполнения произвольного кода в setup.pyфайлах.
Симеон Виссер

1
Спасибо за объяснение Симеону. Еще одна вещь, если вы не против: почему этого не происходит в Ubuntu 14.04, а в Ubuntu 12.04?
Габриэль

4
@Gabriel: Я не уверен - по моему опыту, pipвсегда прерывается, когда не удается найти пакет для установки. Это, как говорится pip, активно разрабатывается, поэтому, возможно, у вас есть версия, с которой я еще не работал.
Симеон Виссер

2
@SimeonVisser, «[колеса] позволяют собрать список всех необходимых пакетов без выполнения произвольного кода», интересно, поделитесь мыслями, как это сделать (к настоящему моменту)?
sschuberth

45

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

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

python3 -m pip install <pkg>

1
это происходит, когда в setuptools есть python_requires='>=3.0'требование
Хуан-Каббали

12

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

Команда:

python3 -m pip install --pre --upgrade PACKAGE==VERSION.VERSION.VERSION


4

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

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

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


4

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

pip install --isolated Flask

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


2

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

pip install -U <package_name> --user --proxy=<your proxy>

2

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

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

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

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


1

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



-8

может помочь

sudo pip install wheel == 0.29.0


4
Извините .. Я не читаю на китайском или другом азиатском языке .. В будущем реферальная ссылка может сломаться ... пожалуйста, разместите здесь самое необходимое. Как опубликовал его некачественный ответ без контекста.
ZF007

1
Реферальная ссылка на японском ... пожалуйста, рассмотрите возможность обмена ссылками на английском
javidazac

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

6
@ rg88 Это было бы хорошо для комментария (возможно, с оговоркой), но ответ на Stack Overflow должен быть самодостаточным и убедительным.
tripleee 08

не имеет отношения к японскому языку, но при чем тут вопрос?
KansaiRobot

-8

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

Обновите версию 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

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


2
При чем тут jupyter ??
Bzazz

как обновление pip может разрешить зависимости? Требуются зависимости в вызывающем каталоге.
Ризван Джавид
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.