Який офіційний «кращий» спосіб встановити pip та virtualenv по всій системі?


86

Чи це саме те, що люди, здається, рекомендують найчастіше:

$ sudo apt-get install python-setuptools
$ sudo easy_install pip
$ sudo pip install virtualenv

Або це, що я отримав з http://www.pip-installer.org/en/latest/installing.html :

$ curl -O https://github.com/pypa/virtualenv/raw/master/virtualenv.py
$ python virtualenv.py my_new_env
$ . my_new_env/bin/activate
(my_new_env)$ pip install ...

Або щось зовсім інше?

Відповіді:


93

Якщо ви можете встановити останню версію Python (2.7.9 і новіших версій), Pip тепер у комплекті з нею. Див .: https://docs.python.org/2.7//installing/index.html
Якщо ні:
Оновлення (з приміток до випуску):

Починаючи з версії 1.5.1, pip не вимагає установки інструментів перед запуском get-pip.py. Крім того, якщо setuptools (або розповсюдження) ще не встановлено, get-pip.py встановить для вас setuptools.

Зараз я запускаю звичайний:

curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | sudo python

Ось офіційні вказівки щодо встановлення: http://pip.readthedocs.org/en/latest/installing.html#install-pip

EDIT 25 липня 2013:
Змінено URL-адресу для встановлення setuptools.

EDIT 10-лютого 2014:
Видалено встановлення установок (дякую @Ciantic)

РЕДАКТУВАТИ 26 червня 2014 року:
Знову оновлена ​​URL-адреса (спасибі @LarsH)

РЕДАКТУВАТИ 1 березня 2015 р .:
Pip тепер входить до складу Python


1
Де / як ви встановлюєте setuptools-0.8? Схоже, ви просто хапаєтеся ez_setup.pyза "полегшену версію" отримання піп. Я зробив би те саме, але побоювався, що найближчим часом воно зламається, і я знову застряю тут (як завжди)
Стівен Лу

3
Ах, схоже, в інструкції сказано просто робити так, як ви тут говорите, це санкціоновано. Тоді не зважай.
Steven Lu

4
Існує новий (?) Спосіб зробити це, він автоматично встановлює pip та setuptools: wget --no-check-certificate https://raw.github.com/pypa/pip/master/contrib/get-pip.py а потім python get-pip.py(може знадобитися sudo)
Ciantic

3
Тепер URL-адреса для get-pip.py, здається, змінилася на https://bootstrap.pypa.io/get-pip.py. Можливо, краще просто посилатися на офіційні інструкції.
LarsH

2
PS Дякую за цю відповідь - це допомогло мені встановити pip.
LarsH

21

http://www.pip-installer.org/en/latest/installing.html - справді канонічна відповідь на це питання.

Зокрема, загальносистемні інструкції:

$ curl -O http://python-distribute.org/distribute_setup.py
$ python distribute_setup.py
$ curl -O https://raw.github.com/pypa/pip/master/contrib/get-pip.py
$ python get-pip.py

Розділ, наведений у питанні, є virtualenvінструкціями, а не загальносистемними. Ці easy_installінструкції були навколо довше, але це не обов'язково робити це таким чином більше.


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

1
Оновлення: розповсюдження більше не працює для pip! Дивіться stackoverflow.com/a/17601159/78234
Таль Вайс

1
Зверніть увагу, що інструкції на пов’язаній сторінці більше не відповідають інструкціям, наведеним тут. Найкраще просто відвідати офіційну сторінку і робити те, що вони кажуть (і чому взагалі хтось сумнівався в них ?!)
Ніл Трафт,

Підхід, описаний у цій відповіді, застарів і, схоже, вже не працює.
cel

16

Ця відповідь надійшла від @webology у Twitter:

$ sudo apt-get install python-setuptools
$ sudo easy_install pip
$ sudo pip install --upgrade pip virtualenv virtualenvwrapper

Мої додані нотатки:

  • На Mac / Windows (і Linux, якщо apt repo застаріло), ви б замінили перший крок завантаженням установок з http://pypi.python.org/pypi/setuptools
  • У Windows вам доведеться опустити virtualenvwrapper з останнього кроку та якось встановити його вручну. Я не знаю, чи є спосіб зробити це без Кігвіна, але я сподіваюся.

1
Якщо умовою є те, що вам потрібні загальносистемні установки pip і virtualenv, це те, що я зазвичай роблю. Інструкції з піп-документації, наведені як друга альтернатива у питанні, базуються на передумові, що ми уникаємо встановлення будь-чого загальносистемного.
Carl Meyer,

3
Перші дві команди можна замінити на $ sudo apt-get install python-pip. Встановлення python-pip також встановить python-setuptools.
Денніс

4

На Ubuntu 12.04 мені пощастило, просто використовуючи менеджер пакетів:

sudo apt-get install python-pip virtualenvwrapper

1
Запаковані версії застаріли. 12.04 забезпечує, python-pip 1.0-1build1що було випущено на початку 2011 року та virtualenvwrapper 2.11.1-21випущено в січні 2012 року. Відповідь Річарда Джонса отримає найсвіжіші відомості.
JCotton 12.03.13

3

Немає кращого методу - все залежить від ваших потреб. Часто в системі з будь-якої причини потрібно мати різні інтерпретатори Python. У цьому випадку вам потрібно встановити матеріали окремо для кожного перекладача. Окрім цього: я вважаю за краще встановлювати речі самостійно, замість того, щоб заздалегідь розфасовані речі іноді викликали проблеми - але це лише одна з можливих думок.


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

3

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

Перше запитання, на яке потрібно відповісти у вашому випадку використання, - "Чи хочу я використовувати систему Python?" Якщо ви хочете використовувати Python, що розповсюджується разом з вашою операційною системою, то використання методу встановлення apt-get може бути чудовим. Однак, залежно від методу розповсюдження операційної системи, вам все одно доведеться задати ще кілька запитань, наприклад "Чи хочу я встановити кілька версій цього пакету?" Якщо відповідь позитивна, то, мабуть, не є гарною ідеєю використовувати щось на зразок apt. Dpkg в значній мірі просто розпакує архів у корені файлової системи, тому від супровідника пакунків залежить, чи безпечно він встановлюється за дуже незначних припущень. У випадку з більшістю пакунків debian я б припустив (хтось може сміливо мене виправляти тут), що вони просто розпаковують і надають пакет найвищого рівня.

Наприклад, скажімо, що пакет - "virtualenv", з яким ви закінчите /usr/lib/python2.x/site-packages/virtualenv. Якщо ви встановите його разом, easy_installви отримаєте щось подібне, /usr/lib/python2.x/site-packages/virtualenv.egg-linkщо може вказувати на те, /usr/lib/python2.x/site-packages/virtualenv-1.2-2.x.eggщо може бути каталог або застібне яйце. Pip робить щось подібне, хоча не використовує яйця, і замість цього розмістить пакет верхнього рівня безпосередньо в libкаталозі.

Можливо, я не на шляху, але справа в тому, що кожен метод враховує різні потреби. Ось чому такі інструменти, як virtualenv, є корисними, оскільки вони дозволяють вам виділити ваші бібліотеки Python у пісочницю, щоб ви могли мати будь-яку комбінацію бібліотек та версій, які вам потрібні.

Setuptools також дозволяє встановлювати пакунки як мультиверсію, що означає, що не створено особливої ​​мо dule_name.egg-link. Для імпорту цих пакунків вам потрібно використовувати pkg_resources та __import__функцію.

Повертаючись до свого початкового питання, якщо ви задоволені системним python і плануєте використовувати virtualenv та pip для побудови середовищ для різних додатків, то встановлення virtualenv та / або pip на системному рівні за допомогою apt-get видається абсолютно доречним. Одне слово обережності полягає в тому, що якщо ви плануєте оновити свої дистрибутиви Python, це може мати ефект пульсацій через ваші virtualenvs, якщо ви повернетеся назад до системних пакетів веб-сайтів.

Слід також зазначити, що жоден із цих варіантів за своєю суттю не кращий за інші. Вони просто застосовують різні підходи. Використання системної версії є прекрасним способом встановлення програм Python, проте це може бути дуже складним способом розробки за допомогою Python. Проста установка та налаштування інструментів дуже зручна у світі без virtualenv, але якщо вам потрібно використовувати різні версії однієї і тієї ж бібліотеки, то вона також стане досить громіздкою. Pip і virtualenv насправді діють більше як віртуальна машина. Замість того, щоб подбати про те, щоб встановлювати речі поруч, ви просто створюєте абсолютно нове середовище. Недоліком тут є те, що 30+ віртуальних версій пізніше, можливо, ви витратили досить багато дискового простору і захарастили свою файлову систему.

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



2

Оскільки virtualenvs містять pip за замовчуванням, я майже ніколи не встановлюю pip глобально. Те, що я роблю, закінчується схожим на:

$ sudo apt-get install python-setuptools
$ curl -O http://python-distribute.org/distribute_setup.py
$ sudo python distribute_setup.py
$ sudo easy_install virtualenv

Потім я приступаю до встановлення та налаштування virtualenvwrapper на мій смак, і я йду. можливо, варто також поглянути на віртуаленв-буррито Джеремі Авнета:

https://github.com/brainsik/virtualenv-burrito


Дякую за улов. ;)
Девід Гулдін,

3
Чому ви докучаєте python-setuptools, а потім розповсюджуєте, коли можете перейти безпосередньо до розповсюдження?
lambacck

@lambacck Не могли б ви опублікувати те, що описуєте, в окремій відповіді (навіть якщо це здається повторюваним)?
кавомолка

2
Не кажучи вже про те, що на будь-якому останньому Ubuntu (і Debian теж? Не впевнений) пакет "python-setuptools" насправді Є розповсюдженням, тому ви можете просто пропустити певний крок розповсюдження.
Carl Meyer,

@ coffee-grinder distribute - це вилка набору інструментів і тому надає однакову функціональність (і більше). Не турбуйтеся "apt-get install python-setuptools", якщо python-setuptools НЕ розповсюджується (як може вказати Карл), і в цьому випадку пропустіть кроки 2 і 3.
lambacck,

2

@ericholscher каже у Twitter, "Той, що в офіційних документах .."

Це чудовий момент, ви повинні робити те, що сказано в документах.

Цитується з офіційних інструкцій з встановлення pip за адресою http://www.pip-installer.org/en/latest/installing.html :

$ curl -O https://github.com/pypa/virtualenv/raw/master/virtualenv.py
$ python virtualenv.py my_new_env
$ . my_new_env/bin/activate
(my_new_env)$ pip install ...

✓ Це найкращий варіант, якщо ви не хочете покладатися на дистрибутивні пакети.
Тобу

2

Починаючи з дистрибутивних пакетів, ви можете використовувати:

sudo apt-get install python-virtualenv

що дозволяє створювати віртуальні файли, або

sudo apt-get install python{,3}-pip

що дозволяє встановлювати довільні пакети до домашнього каталогу.

Якщо ви звикли до virtualenv, перша команда надає вам усе необхідне (пам’ятайте, pip поставляється в комплекті і буде встановлений у будь-якому створеному вами virtualenv).

Якщо ви просто хочете встановити пакети, друга команда дає вам те, що вам потрібно. Використовуйте pip так:

pip install --user something

і поставити щось на зразок

PATH=~/.local/bin:$PATH

у вашому ~/.bashrc.


Якщо ваш дистрибутив давній, і ви взагалі не хочете використовувати його пакети (можливо, крім самого Python), ви можете завантажити virtualenv або як tarball, або як самостійний скрипт:

wget -O ~/bin/virtualenv https://raw.github.com/pypa/virtualenv/master/virtualenv.py
chmod +x ~/bin/virtualenv

Якщо ваш дистрибутив більше схожий на кривавий край, Python3.3 має вбудовані можливості, схожі на virtualenv:

python3 -m venv ./venv

Це працює швидше, але набір інструментів та піп не включені.



2

У Raspbian навіть немає потреби згадувати python2.7. Дійсно, це найкращий спосіб встановити pip, якщо версія python менше ніж 2.7.9.

curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | sudo python

Завдяки @ tal-weiss



1

Я використовую get-pip та virtualenv-burrito, щоб встановити все це. Не впевнений, чи потрібні python-setuptools.

# might be optional. I install as part of my standard ubuntu setup script
sudo apt-get -y install python-setuptools

# install pip (using get-pip.py from pip contrib)
curl -O https://raw.github.com/pypa/pip/develop/contrib/get-pip.py && sudo python get-pip.py

# one-line virtualenv and virtualenvwrapper using virtualenv-burrito
curl -s https://raw.github.com/brainsik/virtualenv-burrito/master/virtualenv-burrito.sh | bash


0

Колишній метод чудовий. Єдина проблема, яку я бачу - це те, що у вас може вийти стара версія setuptools (якщо сховище apt не оновлювалось ..

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