Не вдалося знайти версію, яка б задовольняла вимогу <package>


139

Я встановлюю кілька пакетів 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 може залежати від місцевих пакетів варіння. Перевірте, чи встановлені вони!
James111

У мене був той самий випуск, з 'python -m pip install flask', я зміг його встановити
фрілансер

Відповіді:


47

Цей підхід (маючи всі залежності в каталозі та не завантажуючи з індексу) працює лише тоді, коли каталог містить усі пакети. Тому каталог повинен містити всі залежності, а також усі пакети, від яких залежать ці залежності (наприклад 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, активно розробляється, тому, можливо, у вас є версія, з якою я не працював.
Симеон Віссер

@SimeonVisser, "[колеса] дозволяють зібрати список усіх необхідних пакетів без виконання довільного коду", цікаво, поділившись розумом, як насправді зробити це (до цього часу)?
sschuberth

39

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

Це спрацювало ( <pkg>було pyserialв моєму випадку):

python3 -m pip install <pkg>

1
це відбувається, коли в setuptools є python_requires='>=3.0'така вимога
Хуан-Кабалі

11

Після 2 годин пошуку я знайшов спосіб виправити це лише одним командним рядком. Вам потрібно знати версію пакету (Просто шукайте версію ПАКЕТИ).

Команда:

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


4

Спробуйте встановити колбу через панель повноважень за допомогою наступної команди.

pip install --isolated Flask

Це дозволить встановленню уникати змінних середовищ та конфігурації користувача.


3

Не завжди, але в деяких випадках пакет вже існує. Наприклад - getpass. Він не перелічено "список піп", але його можна імпортувати та використовувати:

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

Якщо я спробую встановити протокол getpass, я отримаю таку помилку: "Не вдалося знайти версію, яка задовольняє вимогу getpass"


1

Я отримав цю помилку під час встановлення 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.


1

Якщо ви зіткнулися з цим питанням на робочому місці. Це може бути рішенням для вас.

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


-6

Використовуйте командний рядок і виберіть Запустити як адміністратор.

Оновіть версію pip

Щоб оновити PIP, введіть цю команду та натисніть клавішу Enter: -

python.exe -m pip install - оновлення pip

Поверніться до шляху python C: \ Користувачі \ Джек \ AppData \ Місцеві \ Програми \ Python \ Python37 \ Сценарії

Введіть зошит юпітера

Ви будете перенаправлені на http: // localhost: 8888 / undefined / tree - Домашня сторінка Юпітера

Сподіваюся, це допомагає !!!!!!!!!!!


2
Що спільного з цим має юпітер ??
Bzazz

як оновлення піп може вирішити залежності? Це вимагає залежностей у виклику каталогу.
Різван Джавід

-7

може допомогти

sudo pip встановити колесо == 0,29,0


4
Вибачте .. Я не читаю китайську чи іншу азіатську мову. Посилання на перенаправлення може в майбутньому розірватися ... будь ласка, опублікуйте основні тут. Як розміщено відповідь низької якості без контексту.
ZF007


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

6
@ rg88 Це було б добре для коментаря (можливо, з застереженням), але відповідь на переповнення стека повинна бути самодостатньою та переконливою.
трійка
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.