Каков официальный «предпочтительный» способ установки 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
Если нет:
Обновите (из примечаний к выпуску):

Начиная с v1.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

РЕДАКТИРОВАТЬ 25 июля 2013 г .:
изменен URL-адрес для установки setuptools.

ИЗМЕНИТЬ 10 ​​февраля 2014 г .:
удалена установка setuptools (спасибо @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 08
1
Обновление: распространение больше не работает для pip! См. Stackoverflow.com/a/17601159/78234
Tal Weiss
1
Обратите внимание, что инструкции на связанной странице больше не соответствуют инструкциям здесь. Лучше всего просто зайти на официальную страницу и делать то, что они говорят (а почему вообще кто-то в них сомневался ?!)
Нил Трафт
Подход, описанный в этом ответе, устарел и, похоже, больше не работает.
чел
16

Этот ответ пришел от @webology в Twitter:

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

Мои добавленные заметки:

  • В Mac / Windows (и Linux, если репозиторий apt устарел), вы должны заменить первый шаг загрузкой инструментов установки из http://pypi.python.org/pypi/setuptools
  • В Windows вам придется опустить virtualenvwrapper на последнем шаге и как-то установить его вручную. Я не знаю, есть ли способ сделать это без Cygwin, но я надеюсь на это.
Кофемолка
источник
1
Если условие состоит в том, что вам нужны общесистемные установки pip и virtualenv, я обычно так и делаю. Инструкции из документации pip, которые приведены в качестве второй альтернативы в вопросе, основаны на предпосылке, что мы избегаем установки чего-либо в масштабе всей системы.
Карл Мейер
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 года. Ответ @Richard Jones предоставит вам самую последнюю информацию.
JCotton
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__ функцию.

Возвращаясь к исходному вопросу, если вы довольны системным питоном и планируете использовать virtualenv и pip для создания сред для различных приложений, тогда установка virtualenv и / или pip на системном уровне с использованием apt-get кажется вполне подходящей. Однако одно предостережение заключается в том, что если вы планируете обновить свои дистрибутивы Python, это может иметь волновой эффект в ваших виртуальных библиотеках, если вы снова подключитесь к пакетам вашего системного сайта.

Я также должен упомянуть, что ни один из этих вариантов по своей сути не лучше других. Просто у них разные подходы. Использование системной версии - отличный способ установки приложений Python, но разработка с использованием Python может оказаться очень сложной задачей. Простая установка и настройка очень удобны в мире без virtualenv, но если вам нужно использовать разные версии одной и той же библиотеки, она также становится довольно громоздкой. Pip и virtualenv действительно больше похожи на виртуальную машину. Вместо того, чтобы устанавливать все рядом друг с другом, вы просто создаете совершенно новую среду. Обратной стороной здесь является то, что 30+ виртуальных машин спустя вы, возможно, израсходовали довольно много дискового пространства и загромождали свою файловую систему.

Как видите, из-за множества вариантов трудно сказать, какой метод использовать, но, немного изучив варианты использования, вы сможете найти метод, который работает.

Elarson
источник
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 по своему вкусу, и я ухожу. Возможно, стоит также взглянуть на virtualenv-burrito Джереми Авнета:

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

Дэвид Гулдин
источник
Спасибо за улов. ;)
Дэвид Голдин 07
3
Почему вы возитесь с python-setuptools, а затем распространяете, когда вы можете сразу перейти к распространению?
lambacck
@lambacck Не могли бы вы опубликовать то, что вы описываете, в отдельном ответе (даже если он кажется повторяющимся)?
кофемолка
2
Не говоря уже о том, что на всех последних версиях Ubuntu (и Debian тоже? Не уверен) пакет "python-setuptools" действительно распространяется, так что вы можете просто пропустить конкретный шаг распространения.
Карл Мейер
@ coffee-grinder distribute представляет собой ответвление инструментов настройки и поэтому обеспечивает ту же функциональность (и даже больше). Не беспокойтесь о выполнении «apt-get install python-setuptools», если только python-setuptools не распространяется (как указывает Карл), и в этом случае пропустите шаги 2 и 3.
lambacck
2

@ericholscher пишет в Твиттере: «Тот, что есть в официальных документах ..»

Это отличный момент, вы должны делать то, что написано в документации.

Цитата из официальных инструкций по установке 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 ...
Кофемолка
источник
✓ Это лучший вариант, если вы не хотите полагаться на пакеты распространения.
Tobu
2

Начиная с пакетов дистрибутива, вы можете использовать:

sudo apt-get install python-virtualenv

который позволяет вам создавать виртуальные объекты, или

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

который позволяет вам устанавливать произвольные пакеты в ваш домашний каталог.

Если вы привыкли к virtualenv, первая команда предоставит вам все необходимое (помните, что pip входит в комплект и будет установлен в любой созданный вами virtualenv).

Если вы просто хотите установить пакеты, вторая команда даст вам то, что вам нужно. Используйте пип так:

pip install --user something

и поставить что-то вроде

PATH=~/.local/bin:$PATH

в вашем ~/.bashrc.


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

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

Если ваш дистрибутив более передовой, Python3.3 имеет встроенные возможности, подобные virtualenv:

python3 -m venv ./venv

Это работает намного быстрее, но инструменты настройки и pip не включены.

Тобу
источник
2

Чтобы установить pip на Mac (OSX), мне отлично подошел следующий лайнер:

sudo easy_install pip
Брэд Паркс
источник
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

https://github.com/pypa/pip/raw/master/contrib/get-pip.py , вероятно, сейчас правильный путь.

кодрейджер
источник
Я знаю, что virtualenv поставляется с пипсом. Пип идет с virtualenv?
кофемолка
1
Нет, ты бы сразу pip install virtualenvпосле этого.
coderanger
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
carl_kibler
источник
1

В Debian лучший способ сделать это -

sudo apt-get install python-pip

Yehonatan
источник
1
Версия debian может быть очень старой. проверьте этот ответ для получения дополнительной информации: unix.stackexchange.com/a/182467/17425
georgiecasey
0

Первый метод хорош. Единственная проблема, которую я вижу, это то, что вы можете получить старую версию setuptools (если репозиторий apt не обновлялся ..

bradley.ayers
источник