Як я можу оновити файл pip всередині свого віртуального середовища?


523

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

Яка команда для цього? Чи потрібно використовувати distribute чи є вроджена команда pip або virtualenv? Я вже пробував pip updateі pip update pipбез успіху.


40
pip install --upgrade pip? Це просто ще один пакет PyPI.
Cairnarvon

1
Ця команда дає мені "/ Users / zak / MyProject / venv / bin / pip install: error: немає такого варіанта:
update

4
Це --upgrade, ні --update, вибачте. Я відредагував своє повідомлення негайно, але ви, напевно, бачили його зовсім не в той час.
Cairnarvon

2
@Cairnarvon - чим відрізняється команда pip3? Я намагаюся отримати pip3, але він просто говорить мені, що не може його знайти, а потім продовжує скаржитися ПРОТИ, що його не актуально ... коли він навіть не дозволяє мені оновити / оновити його!
Чарлі Паркер

Відповіді:


929

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, але він все ще показує стару версію.
Zitrax

40
У Windows, ймовірно, краще використовувати таку команду: python -m pip install --upgrade pipщоб уникнути запуску pip.exe з каталогу скриптів.
Біалікс

@Zitrax ви вирішили цю проблему? Я зіткнувся з тією ж проблемою.
Мохаммед Алі Багершемірані

@Mohammadalibaghershemirani Вибачте, це було давно - не пам'ятаю.
Zitrax

58

Більш безпечним методом є запуск pip через модуль python :

python -m pip install -U pip

У вікнах, здається, існує проблема з бінарними файлами, які намагаються замінити себе, цей метод працює навколо цього обмеження.


9
Це саме те, що рекомендує сам pip, якщо він виявляє новішу версію себе.
тефір

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

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

42

У моєму випадку моя версія pip була зламана, тому оновлення само по собі не працювало.

Виправити:

(inside virtualenv):easy_install -U pip

1
Це був і мій випадок. Я спробував усі інші методи, але тільки цей мені допомагає. Дякую !
levif

Те саме тут, це єдиний спосіб, який працює для мене на Debian. Використання python або pip для оновлення pip зсередини virtualenv не вдасться, оскільки він відмовився видаляти існуючий піп, що сидить за межами venv.
користувач3748764

Запуск цього показав мені багато речей, у тому числі, 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 - nadograd pip ' не завжди працює через жахливу проблему cert: Виникла проблема з підтвердженням сертифіката 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 -s, якщо ви хочете заглушити вихід під час запуску в сценарії автоматизації.


1

У моєму випадку це працювало з командного рядка терміналу в Debian Stable

python3 -m pip install --upgrade pip

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

Pip версія 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

Рішення полягає у тому, щоб опинитися у венурі, який потрібно оновити, а потім запустити:

sudo myvenv/bin/pip install --upgrade pip

а не просто

sudo pip install --upgrade pip

1

Якщо ви використовуєте venv, будь-яке оновлення для установки pip призведе до оновлення системного pip замість venv. Вам також потрібно оновити пакети завантаження для піп.

  python3 -m pip install --upgrade pip setuptools wheel

виникла певна проблема про пітона-поштиста чи пепу. На жаль, всі сторони відсунули відповідальність як not my motorollerпроблему
дер-ч-

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 . Збережіть файл у якомусь фордері або dekstop. Я зберег файл у своєму D-диску. Потім з вашого командного рядка перейдіть до папки, куди ви завантажили pip. Потім введіть там

python -get-pip.py

Скріншот встановлення Pip

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.