Почему pip устанавливает старую версию моего пакета?
Я только что загрузил новую версию моего пакета в PyPi (1.2.1.0-r4): я могу загрузить файл egg и установить его с помощью easy_install, и версия проверяется правильно. Но когда я пытаюсь установить с помощью pip, он устанавливает версию 1.1.0.0 вместо. Даже если я явно указываю версию для 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 вместо этого?
8 ответов:
это хороший вопрос. Мне потребовалась вечность, чтобы понять это. Это решение, которое работает для меня:
видимо, если
pip
можно найти локальную версию пакета,pip
предпочтет локальные версии удаленным. Я даже отключил свой компьютер от интернета и попробовал его снова - когдаpip
все еще успешно установил пакет и даже не жаловался, источник был явно локальным.действительно запутанная часть, в моем дело было в том, что
pip
нашел новые версии на pypi, сообщил о них, а затем пошел вперед и переустановил старую версию в любом случае ... Аргх. Кроме того, он не сказал мне, что он делает, и почему.так как же я решил эту проблему?
вы можете узнать
pip
дать подробный вывод с помощью-v
флаг ... но одного недостаточно. Я RTFM-ed помощь, которая сказала, что вы можете сделать-v
несколько раз, до 3x, для более подробного вывода. Так Что Я сделал:pip install -v -v -v <my_package>
затем я посмотрел на выход. Одна строчка привлекла мое внимание:
источник в /tmp / pip-build-root / имеет версию 0.0.11, которая удовлетворяет требованию
Я удалил этот каталог, после чего
pip
установлена самая новая версия от pypi.
спасибо Маркус Смит, который делает удивительную работу в качестве сопровождающего pip, это было исправлено в версии 1.4 pip, которая была выпущена на 2013-07-23.
соответствующая информация от список изменений для этой версии
исправлен ряд проблем (#413, #709, #634, #602, и #939), связанные с очистка и не повторное использование каталогов сборки. (Блат #865, #948)
нашел здесь что есть известная ошибка в pip, что он не будет проверять версию, если есть каталог сборки с распакованными источниками. Я проверил это на моем тревожном пакете и после удаления его источников из каталога сборки pip установил необходимую версию.
если вы используете
pip
версия, которая поставляется с некоторыми пакетов (экс. Ubuntu python-pip), возможно, Вам потребуется установить более новый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. Единственный работающий способ-установка из тарбола:
pip install https://pypi.python.org/packages/source/p/pika/pika-0.9.8.tar.gz
.