Установка определенных версий пакета с помощью 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 в пакетах сайта. Это проблема, специфичная для данного пакета, или я делаю что-то не так?

Ответ 1

Во-первых, я вижу две проблемы с тем, что вы пытаетесь сделать. Поскольку у вас уже установлена ​​установленная версия, вам необходимо либо удалить текущий существующий драйвер, либо использовать 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

Ответ 2

Вы даже можете использовать диапазон версий с помощью команды 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

Ответ 3

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

pip install -Iv MySQL_python==1.2.2

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

Ответ 4

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

pip install --force-reinstall MySQL_python==1.2.4

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

pip install MySQL_python==

Ответ 5

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

Ответ 6

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

~$ 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

Ответ 7

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

pip install 'pip<10' 

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

Ответ 8

Недавно я столкнулся с проблемой при использовании флага 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 при обновлении версий установленных пакетов.

Ответ 9

Есть два способа установить любой пакет с версией: - 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. *

Ответ 10

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

pip install MySQL_python --upgrade

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

Ответ 11

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

Версия Python - 2.7

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

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