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

929

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

  • 12
    Спасибо за подсказку, это помогло мне установить более старую версию openpyxl через pip install MySQL_python==1.8.9
  • 3
    Да, это также работает для панд, спасибо: pip install -Iv pandas==0.12.0
Показать ещё 1 комментарий
Теги:
pip
mysql-python
pypi

7 ответов

636
Лучший ответ

Во-первых, я вижу две проблемы с тем, что вы пытаетесь сделать. Поскольку у вас уже установлена ​​установленная версия, вам необходимо либо удалить текущий существующий драйвер, либо использовать 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
  • 1
    Тем не менее, не должно быть проблем с наличием нескольких версий, вот в чем смысл создания новых папок для каждой версии и использования файлов .pth.
  • 3
    Это устанавливает правильную версию, так что ответ на этот вопрос - спасибо за вашу помощь. Теперь возникает другая проблема: «ошибка: команда« /usr/bin/gcc-4.2 »завершилась неудачно с состоянием выхода 1» при создании расширения «_mysql». Я знаю, что у меня есть GCC, и установка для MySQL_python 1.2.3 проходит без проблем. Другие видели эту проблему, особенно с 1.2.2?
Показать ещё 4 комментария
300

Вы даже можете использовать диапазон версий с помощью команды 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
  • 99
    например: $ pip install 'xkcdpass==1.2.5' --force-reinstall
  • 1
    идеально! работал на Ubunto 15.04, и он (автоматически) заменил существующую библиотеку указанной версией. Решил все мои проблемы!
Показать ещё 4 комментария
102

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

pip install -Iv MySQL_python==1.2.2

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

  • 0
    Осторожно! У меня был опыт, что это установило различные версии рядом друг с другом ! Также интересно, что pip list не знал об этом, но conda list был (и будет отображать различные версии пакета). Это также полностью запутало Пихарм .
34

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

  • 0
    У меня не установлено - с использованием свежего virtualenv, созданного с опцией --no-site-packages
  • 2
    Итак, вы спрашиваете версию 1.2.2, и она все еще устанавливает 1.2.3, и ничего больше не было установлено? Синтаксис, который вы использовали, правильный для получения определенных версий.
Показать ещё 1 комментарий
32

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

pip install --force-reinstall MySQL_python==1.2.4

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

pip install MySQL_python==
  • 2
    С пипсом 10.0.1 это единственное рабочее решение. Опция "-I" фактически переустанавливает предыдущую версию.
3

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

pip install 'pip<10' 

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

0

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню