Почему pip устанавливает старую версию моего пакета?

Я только что загрузил новую версию своего пакета в PyPi (1.2.1.0-r4): я могу загрузить файл яйца и установить его с помощью easy_install, и версия проверяется правильно. Но когда я пытаюсь установить с помощью pip, вместо этого он устанавливает версию 1.1.0.0. Даже если я явно pip install -Iv tome==1.2.1.0-r4 версию на pip с pip install -Iv tome==1.2.1.0-r4 , я получаю это сообщение: Requested tome==1.2.1.0-r4, but installing version 1.1.0.0 , но я не понять почему.

Я дважды проверил с parse_version и подтвердил, что строка версии 1.2.1 больше, чем версия 1.1.0, как показано:

 >>> from pkg_resources import parse_version as pv >>> pv('1.1.0.0') < pv('1.2.1.0-r4') True >>> 

Итак, любая идея, почему он решил установить 1.1.0 вместо этого?

6 Solutions collect form web for “Почему pip устанавливает старую версию моего пакета?”

Это отличный вопрос. Мне потребовалось бесконечно, чтобы понять. Это решение, которое работает для меня:

По-видимому, если pip может найти локальную версию пакета, pip предпочитает локальные версии для удаленных. Я даже отключил свой компьютер от Интернета и попробовал его снова – когда pip все еще успешно установил пакет и даже не пожаловался, источник был явно локальным.

На самом деле запутанная часть, в моем случае, заключалась в том, что pip нашел более новые версии на pypi , сообщил о них, а затем пошел дальше и снова установил старую версию … arggh. Кроме того, он не сказал мне, что он делает, и почему.

Как я решил эту проблему?

Вы можете заставить pip предоставить подробный вывод с использованием флага -v … но одного недостаточно. Я RTFM-ed помощь, в которой говорилось, что вы можете делать -v несколько раз, до 3x, для более подробного вывода. Так я и сделал:

 pip install -v -v -v <my_package> 

Затем я просмотрел выход. Одна линия привлекла мое внимание:

Источник в / tmp / pip-build-root / имеет версию 0.0.11, которая удовлетворяет требованию <my_package>

Я удалил этот каталог, после чего pip установил самую новую версию из pypi.

Благодаря Маркусу Смиту , который делает потрясающую работу в качестве технического специалиста, это было исправлено в версии 1.4 пипса, которая была выпущена в 2013-07-23.

Соответствующая информация из журнала изменений для этой версии

Исправлено несколько проблем (# 413, # 709, # 634, # 602 и # 939), связанных с очисткой и повторным использованием каталогов сборки. (Pull # 865, # 948)

Я нашел здесь, что есть известная ошибка в pip, которая не проверяет версию, если есть каталог с распакованными источниками. Я проверил это на своем тревожном пакете и после удаления его источников из каталога сборки pip установил нужную версию.

Если вы используете версию pip которая поставляется с некоторыми дистрибутивными пакетами (например, Ubuntu python-pip), вам может потребоваться установить более новую версию pip :

Обновите приложение до последней версии:

sudo pip install -U pip

В случае «virtualenv» пропустите «sudo»:

pip install -U pip

Может потребоваться следующая команда, если ваша оболочка сообщает что-то вроде -bash: /usr/bin/pip: No such file or directory после обновления pip :

hash -d pip

Теперь установите пакет как обычно:

pip install -U foo

или

pip install foo==package.version.here

Получена та же проблема для обновления pika 0.9.5 до 0.9.8. Единственный рабочий путь – установить из tarball: pip install https://pypi.python.org/packages/source/p/pika/pika-0.9.8.tar.gz .

Попробуйте снова загрузить пакет:

 pip install --no-cache-dir --upgrade <package> 
  • Какой из них наиболее pythonic: установка модулей python через диспетчер пакетов (macports, apt) или через pip / easy_install / setuptools
  • Модуль Python не будет устанавливать
  • Доступ к файлам данных до и после distutils / setuptools
  • Как я могу использовать setuptools для создания точки входа console_scripts, которая вызывает `python -m mypackage`?
  • "Объект AttributeError: 'module' не имеет атрибута" с установленным пакетом
  • Тестирование библиотек Python C - получить путь сборки
  • py2app подбирает .git subdir пакета во время сборки
  • Как импортировать пакет PIP через Jython?
  •  
    Interesting Posts for Van-Lav
    Python - лучший язык программирования в мире.