Как мне обновить сам pip из моей виртуальной среды?


523

Я могу обновить пакеты, управляемые pip, но как мне обновить сам pip? В соответствии сpip --version настоящее время у меня установлено приложение pip 1.1 в virtualenv, и я хочу обновить его до последней версии.

Какая команда для этого? Нужно ли использовать дистрибутив или есть собственная команда pip или virtualenv? Я уже попробовал pip updateи pip update pipбезуспешно.


40
pip install --upgrade pip? Это просто еще один пакет PyPI.
Кайрнарвон

1
Эта команда дает мне "/ Users / zak / MyProject / venv / bin / pip install: error: нет такой опции: --update"
zakdances

4
Это --upgradeне --updateизвините. Я немедленно отредактировал свой пост, но вы, должно быть, видели его не в то время.
Кайрнарвон,

2
@Cairnarvon отличается команда для pip3? Я пытаюсь получить pip3, но он просто говорит мне, что не может найти его, а затем продолжает жаловаться СНОВА, что он не обновлен ... когда он даже не позволяет мне обновить / обновить его!
Чарли Паркер

Ответы:


930

pipэто просто пакет PyPI, как и любой другой; Вы можете использовать его для обновления самого себя так же, как и для любого пакета:

pip install --upgrade pip

В Windows рекомендуемая команда :

python -m pip install --upgrade pip

53
Под Windows у меня была проблема с разрешениями при попытке обновить pip с помощью pip. Вместо этого я использовал easy_install для обновления:easy_install pip
bsa

8
Когда я делал это, казалось, что pip обновлялся (1.1 -> 1.4), но когда я делаю «pip --version», он все еще показывает старую версию 1.1. Попытался снова деактивировать и активировать virtualenv, но он все еще показывает старую версию.
Цитрак

40
В Windows, вероятно, лучше использовать такую ​​команду: python -m pip install --upgrade pipчтобы избежать запуска pip.exe из каталога scripts.
Bialix

@ Zitrax ты решил эту проблему? Я столкнулся с той же проблемой.
Мухаммед Али Багершемирани

@Mohammadalibaghershemirani извините, это давно - не помню.
Цитракс

58

Более безопасный метод - запустить pip через модуль python :

python -m pip install -U pip

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


9
Теперь это то, что рекомендует сам pip, если обнаруживает более новую версию.
тефир

1
Я полагаю, что причина в том, что это безопаснее, в том, что в некоторых ОС (Windows) простое выполнение pip может создать блокировку файла на исполняемом файле, что помешает его обновлению. Вызывая Python и приказывая ему загрузить модуль напрямую, вы избегаете доступа к исполняемому файлу.
jpmc26

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

42

В моем случае моя версия pip была сломана, поэтому обновление само по себе не работало.

Fix:

(inside virtualenv):easy_install -U pip

1
Это был и мой случай. Я попробовал все другие методы, но только этот мне помогает. Спасибо !
Левиф

То же самое здесь, это единственный способ, который работает для меня в Debian. Использование python или pip для обновления pip из virtualenv не удастся, потому что он отказался удалить существующий pip, находящийся за пределами venv.
user3748764

Запуск этого показал мне много вещей, в том числе Download error on https://pypi.python.org/simple/pip/: [SSL: TLSV1_ALERT_PROTOCOL_VERSION] tlsv1 alert protocol version (_ssl.c:590) -- Some packages may not be found!не отображаемых при запуске --upgrade. И это, вероятно, причина, по которой установка любого pip-пакета не удалась и почему также не удается обновить pip через pip, SSL кажется сломанным.
Vadorequest

9

Я испробовал все эти решения, упомянутые выше под Debian Jessie. Они не работают, потому что он просто берет последнюю версию, скомпилированную менеджером пакетов Debian, которая является 1.5.6, что соответствует версии 6.0.x. Некоторые пакеты, использующие pip в качестве предварительных условий, не будут работать как результат, например spaCy (для правильной работы которого требуется опция --no-cache-dir).

Таким образом, лучший способ решить эти проблемы - запустить get-pip.py, загруженный с помощью wget, с веб-сайта или с помощью curl, следующим образом:

 wget https://bootstrap.pypa.io/get-pip.py -O ./get-pip.py
 python ./get-pip.py
 python3 ./get-pip.py

Это установит текущую версию, которая на момент написания этого решения была 9.0.1, что намного превышает то, что предоставляет Debian.

 $ pip --version
 pip 9.0.1 from /home/myhomedir/myvirtualenvdir/lib/python2.7/dist-packages (python 2.7)
 $ pip3 --version
 pip 9.0.1 from /home/myhomedir/myvirtualenvdir/lib/python3.4/site-packages (python 3.4)

2
полезно, когда pip install --upgrade pipне удалось
Aneuway

Если бы я мог ответить на этот вопрос несколько раз, я бы. Это просто решило проблему, из-за которой pip 9.x завершился неудачно с ошибкой SSL путем обновления до pip 10.x. См. Stackoverflow.com/questions/25981703/…
Кит Джон Хатчисон

Хорошо, если вы проголосовали за это хоть раз, я буду счастлив. Мои ответы, как правило, можно найти за час или два охоты и многолетний опыт. Не могу сказать то же самое для моих вопросов? Люди могут быть действительно злыми! :)
Имонн Кенни

4

Обновление pip с помощью ' pip install --upgrade pip ' не всегда работает из-за страшной проблемы с сертификатом: возникла проблема с подтверждением сертификата ssl: [SSL: TLSV1_ALERT_PROTOCOL_VERSION] версия протокола оповещения tlsv1

Мне нравится использовать однострочную команду для виртуальных envs:

curl https://bootstrap.pypa.io/get-pip.py | python -

Или, если вы хотите установить его в коробку, вам понадобится

curl https://bootstrap.pypa.io/get-pip.py | sudo python -

Вы можете задать флаг curl a -s, если хотите отключить вывод при запуске в скрипте автоматизации.



1

Чтобы заставить это работать для меня, мне пришлось развернуть каталог Python с помощью командной строки Python (на WIN10 из VS CODE). В моем случае это было в моем каталоге "AppData \ Local \ Programs \ Python \ python35-32". Оттуда теперь я управлял командой ...

python -m pip install --upgrade pip

Это сработало, и мне пора.


1

Откройте командную строку с правами администратора и повторите команду:

python -m pip install --upgrade pip

4
Разве это не то же самое, что некоторые из существующих ответов?
hkchengrex

Но у меня возникла проблема, и она была решена, когда я запустил CMD с правами администратора.
MRamzan

1

Пип версия 10 имеет проблему. Это проявится как ошибка:

ubuntu@mymachine-:~/mydir$ sudo pip install --upgrade pip
Traceback (most recent call last):
  File "/usr/bin/pip", line 9, in <module>
    from pip import main
ImportError: cannot import name main

Решение состоит в том, чтобы перейти в venv, который вы хотите обновить, и затем запустить:

sudo myvenv/bin/pip install --upgrade pip

а не просто

sudo pip install --upgrade pip

1

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

  python3 -m pip install --upgrade pip setuptools wheel

была какая-то проблема с python mailist или pepa. К сожалению, все стороны сняли с себя ответственность как not my motorollerпроблему
dre-hh

0

Я установил Python в C: \ Python \ Python36, поэтому я зашел в командную строку Windows и набрал «cd C: \ Python \ Python36, чтобы перейти к нужному каталогу. Затем ввел все« python -m install --upgrade pip »все хорошо!


0

На моем ноутбуке с Windows 7 правильный способ установки последней версии pip:

python.exe -m pip install --upgrade pip

0

Однострочная программа Python
Лучший способ, который я нашел, - написать однострочную программу, которая загружает и запускает официальный скрипт get-pip. Смотрите код ниже.

Официальные документы рекомендуют использовать curl для загрузки скрипта get-pip, но так как я работаю на windows и у меня не установлено curl, я предпочитаю использовать сам python для загрузки и запуска скрипта.

Вот однострочная программа, которая может быть запущена через командную строку с использованием Python 3:

python -c "import urllib.request; exec(urllib.request.urlopen('https://bootstrap.pypa.io/get-pip.py').read())"

Эта строка получает официальный скрипт «get-pip.py» в соответствии с примечаниями по установке и выполняет скрипт командой «exec».

Для Python2 вы должны заменить «urllib.request» на «urllib2»:

python -c "import urllib2; exec(urllib2.urlopen('https://bootstrap.pypa.io/get-pip.py').read())"

Меры предосторожности
Стоит отметить, что запуск любого скрипта Python вслепую опасен по своей природе. По этой причине официальные инструкции рекомендуют скачать скрипт и проверить его перед запуском.

Тем не менее, многие люди на самом деле не проверяют код, а просто запускают его. Эта однострочная программа делает это проще.


0

У меня была похожая проблема на малиновом пи.

Проблема заключалась в том, что http требует SSL, и поэтому мне нужно было заставить его использовать https, чтобы обойти это требование.

sudo pip install --upgrade pip --index-url=https://pypi.python.org/simple

или

sudo pip-3.2 --upgrade pip --index-url=https://pypi.python.org/simple/

0

Я был в подобной ситуации и хотел обновить пакет urllib3. Что сработало для меня:

pip3 install --upgrade --force-reinstall --ignore-installed urllib3==1.25.3

-2

Очень просто. Просто скачайте pip с https://bootstrap.pypa.io/get-pip.py . Сохраните файл в какой-нибудь фордер или декстоп. Я сохранил файл на своем диске D. Затем в командной строке перейдите в папку, в которую вы скачали pip. Тогда наберите там

python -get-pip.py

Скриншот установки Pip

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.