Установка определенных версий пакета с помощью pip

Я пытаюсь установить версию 1.2.2 адаптера MySQL_python, используя свежий файл virtualenv, созданный с помощью параметра --no-site-packages. Текущая версия, показанная в PyPi - 1.2.3. Есть ли способ установить более старую версию? Я нашел статью о том, что это должно сделать это:

pip install MySQL_python==1.2.2

Однако после установки он по-прежнему показывает MySQL_python-1.2.3-py2.6.egg-info в пакетах сайта. Это проблема, специфичная для данного пакета, или я делаю что-то не так?

+1168
источник поделиться
11 ответов

Во-первых, я вижу две проблемы с тем, что вы пытаетесь сделать. Поскольку у вас уже установлена ​​установленная версия, вам необходимо либо удалить текущий существующий драйвер, либо использовать pip install -I MySQL_python==1.2.2

Однако вы скоро узнаете, что это не работает. Если вы посмотрите на журнал установки протокола, или если вы выполните pip install -Iv MySQL_python==1.2.2, вы обнаружите, что ссылка на URL-адрес PyPI не работает для MySQL_python v1.2.2. Вы можете проверить это здесь: http://pypi.python.org/pypi/MySQL-python/1.2.2

Ссылка 404s загрузки и ссылки обратного URL перенаправляются бесконечно из-за недавнего обновления sourceforge.net и устаревшего URL-адреса PyPI.

Итак, чтобы правильно установить драйвер, вы можете выполнить следующие действия:

pip uninstall MySQL_python
pip install -Iv http://sourceforge.net/projects/mysql-python/files/mysql-python/1.2.2/MySQL-python-1.2.2.tar.gz/download
+789
источник

Вы даже можете использовать диапазон версий с помощью команды pip install. Что-то вроде этого:

pip install 'stevedore>=1.3.0,<1.4.0'

И если пакет уже установлен, и вы хотите понизить его --force-reinstall добавьте --force-reinstall следующим образом:

pip install 'stevedore>=1.3.0,<1.4.0' --force-reinstall
+452
источник
другие ответы

Связанные вопросы


Похожие вопросы

Один из способов, предложенный в этом сообщении, должен указать версию в pip как

pip install -Iv MySQL_python==1.2.2

то есть. Используйте == и укажите номер версии для установки только этой версии. -I, --ignore-installed игнорирует уже установленные пакеты.

+122
источник

Чтобы установить конкретную версию пакета Python, будь то первый раз, обновление или переход на более раннюю версию:

pip install --force-reinstall MySQL_python==1.2.4

MySQL_python версии 1.2.2 недоступен, поэтому я использовал другую версию. Для просмотра всех доступных версий пакета из индекса исключите версию:

pip install MySQL_python==
+58
источник

Я считаю, что если у вас уже установлен пакет, пип не перезапишет его другой версией. Используйте -I, чтобы игнорировать предыдущие версии.

+37
источник

Иногда ранее установленная версия кэшируется.

~$ pip install pillow==5.2.0

Возвращает следующее:
Требование уже выполнено: подушка == 5.2.0 в /home/ubuntu/anaconda3/lib/python3.6/site-packages (5.2.0)

Мы можем использовать --no-cache-dir вместе с -I, чтобы перезаписать это

~$ pip install --no-cache-dir -I pillow==5.2.0
+12
источник

Поскольку в версии 10 pip это явное изменение, я понизил его до совместимой версии:

pip install 'pip<10' 

Эта команда указывает pip установить версию модуля ниже версии 10. Сделайте это в virutalenv, чтобы не испортить установку Python на своем сайте.

+3
источник

Недавно я столкнулся с проблемой при использовании флага pip -I, которую хотел где-то документировать:

-I не удалит существующий пакет перед продолжением; он просто установит его поверх старого. Это означает, что любые файлы, которые должны быть удалены между версиями, будут оставаться на месте. Это может вызвать странное поведение, если эти файлы имеют общие имена с другими установленными модулями.

Например, допустим, есть пакет с именем package. В одном из файлов package используется import datetime. Теперь в [email protected] это указывает на стандартный модуль datetime библиотеки, но в [email protected] они добавили локальный datetime.py в качестве замены стандартной версии библиотеки (по любой причине).

Теперь допустим, что я запустил pip install package==3.0.0, но потом понял, что мне действительно нужна версия 2.0.0. Если я сейчас pip install -I package==2.0.0, старый файл datetime.py не будет удален, поэтому любые вызовы import datetime будут импортировать неправильный модуль.

В моем случае это проявлялось в странных синтаксических ошибках, потому что в новой версии пакета был добавлен файл, совместимый только с Python 3, а когда я понизил версию пакета для поддержки Python 2, я продолжил импортировать модуль только для Python-3.

Исходя из этого, я бы сказал, что удаление старого пакета всегда предпочтительнее, чем использование -I при обновлении версий установленных пакетов.

+1
источник

Есть два способа установить любой пакет с версией: - A). pip install -Iv имя пакета == версия B). pip install -v имя-пакета == версия

Для

Здесь, если вы используете опцию -I во время установки (когда вы не знаете, установлен ли пакет) (например, 'pip install -Iv pyreadline == 2. *' или что-то еще), вы будете устанавливать новый отдельный пакет с тем же существующим пакетом, имеющим другую версию.

Для Б

  1. Во-первых, вы можете проверить отсутствие нарушенных требований. чек

2.и тогда посмотрим, что уже установлено по пипсу

3.Если список пакетов содержит какой-либо пакет, который вы хотите установить с определенной версией, тогда лучшим вариантом будет сначала удалить пакет этой версии, используя pip uninstall package-name

4. А теперь вы можете переустановить тот же пакет с определенной версией, установив pip -v имя_пакета == версия, например, pip install -v pyreadline == 2. *

0
источник

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

pip install MySQL_python --upgrade

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

0
источник

Эта команда ниже работает для меня

Версия Python - 2.7

пакет - питон-дженкинс

команда - $ pip install 'python-jenkins>=1.1.1'

0
источник

Посмотрите другие вопросы по меткам или Задайте вопрос