Jaki jest oficjalny „preferowany” sposób instalowania pip i virtualenv w całym systemie?


86

Czy to jest to, co ludzie wydają się najczęściej polecać:

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

Lub to, które dostałem z 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 ...

A może coś zupełnie innego?

Odpowiedzi:


93

Jeśli możesz zainstalować najnowszy Python (2.7.9 i nowsze), Pip jest teraz w pakiecie. Zobacz: https://docs.python.org/2.7//installing/index.html
Jeśli nie:
Aktualizacja (z informacji o wydaniu):

Począwszy od wersji 1.5.1, pip nie wymaga setuptools przed uruchomieniem get-pip.py. Ponadto, jeśli setuptools (lub dystrybucja) nie jest jeszcze zainstalowany, get-pip.py zainstaluje setuptools.

Teraz prowadzę regularne:

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

Oto oficjalne instrukcje instalacji: http://pip.readthedocs.org/en/latest/installing.html#install-pip

EDYCJA 25 lipca 2013:
Zmieniono adres URL instalacji narzędzi setup.

EDYCJA 10-luty-2014:
Usunięto instalację narzędzi instalacyjnych (dzięki @Ciantic)

EDYCJA 26 czerwca 2014:
ponownie zaktualizowany adres URL (dzięki @LarsH)

EDYCJA 1-Mar-2015:
Pip jest teraz dołączany do Pythona


1
Gdzie / jak zainstalować setuptools-0.8? Wygląda na to, że szukasz ez_setup.py„lekkiej wersji” pobierania pip. Zrobiłbym to samo, ale obawiałbym się, że w najbliższej przyszłości pęknie i znowu tu utknę (jak zawsze)
Steven Lu.

3
Ach, wygląda na to, że instrukcje mówią, aby zrobić to, co tu mówisz, jest to usankcjonowane. Nieważne więc.
Steven Lu

4
Jest nowy (?) Sposób na zrobienie tego, który automatycznie instaluje pip i setuptools: wget --no-check-certificate https://raw.github.com/pypa/pip/master/contrib/get-pip.py a następnie python get-pip.py(może wymagać sudo)
Ciantic

3
Teraz wydaje się, że adres URL dla get-pip.py zmienił się na https://bootstrap.pypa.io/get-pip.py. Chyba lepiej po prostu podać link do oficjalnych instrukcji.
LarsH

2
PS Dzięki za tę odpowiedź - pomogła mi zainstalować pip.
LarsH

21

http://www.pip-installer.org/en/latest/installing.html to tak naprawdę kanoniczna odpowiedź na to pytanie.

W szczególności instrukcje dotyczące całego systemu to:

$ 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

Sekcja cytowana w pytaniu to virtualenvinstrukcje, a nie instrukcje systemowe. Te easy_installinstrukcje zostały okolice na dłużej, ale to nie jest konieczne, aby zrobić to w ten sposób więcej.


Zmieniono, aby wyjaśnić różnicę między ogólnosystemowymi instrukcjami na tej stronie a virtualenvinstrukcjami cytowanymi w pytaniu.
ncoghlan

1
Aktualizacja: dystrybucja nie działa już dla pip! Zobacz stackoverflow.com/a/17601159/78234
Tal Weiss,

1
Należy pamiętać, że instrukcje na połączonej stronie nie są już zgodne z instrukcjami tutaj. Najlepiej po prostu odwiedzić oficjalną stronę i zrobić, co mówią (i dlaczego ktoś w ogóle w nie wątpił ?!)
Neil Traft

Podejście opisane w tej odpowiedzi jest przestarzałe i wydaje się, że już nie działa.
cel

16

Ta odpowiedź pochodzi z @webology na Twitterze:

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

Moje dodane notatki:

  • W systemie Mac / Windows (i Linux, jeśli repozytorium apt jest przestarzałe), zastąp pierwszy krok pobraniem narzędzi konfiguracyjnych z http://pypi.python.org/pypi/setuptools
  • W systemie Windows musiałbyś pominąć virtualenvwrapper z ostatniego kroku i jakoś zainstalować go ręcznie. Nie wiem, czy można to zrobić bez Cygwina, ale mam taką nadzieję.

1
Jeśli warunek jest taki, że chcesz zainstalować programy pip i virtualenv w całym systemie, to zwykle robię. Instrukcje z dokumentacji pip, które są podane jako druga alternatywa w pytaniu, opierają się na założeniu, że unikamy instalowania czegokolwiek w całym systemie.
Carl Meyer

3
Możesz zamienić pierwsze dwa polecenia na $ sudo apt-get install python-pip. Zainstalowanie python-pip spowoduje również zainstalowanie python-setuptools.
Dennis

4

W Ubuntu 12.04 miałem szczęście po prostu używając menedżera pakietów:

sudo apt-get install python-pip virtualenvwrapper

1
Pakowane wersje są bardzo nieaktualne. Wersja 12.04 python-pip 1.0-1build1została wydana na początku 2011 roku i virtualenvwrapper 2.11.1-21wydana w styczniu 2012 roku. Odpowiedź @Richarda Jonesa zawiera najnowsze informacje.
JCotton

3

Nie ma preferowanej metody - wszystko zależy od Twoich potrzeb. Często trzeba mieć w systemie różne interpretery języka Python z dowolnego powodu. W takim przypadku musisz zainstalować zawartość indywidualnie dla każdego tłumacza. Poza tym: wolę instalować rzeczy samodzielnie, zamiast polegać na gotowych pakietach, które czasami powodują problemy - ale to tylko jedna możliwa opcja.


Pytam konkretnie o preferowaną metodę, ponieważ mam zamiar przekazać te instrukcje grupie 20 osób i nie chcę ich wprowadzać w błąd.
młynek do kawy

3

Naprawdę nie ma jednej „odpowiedzi” na to pytanie, ale z pewnością są pewne przydatne koncepcje, które mogą pomóc w podjęciu decyzji.

Pierwsze pytanie, na które należy odpowiedzieć w swoim przypadku użycia, brzmi: „Czy chcę używać systemu Python?” Jeśli chcesz używać Pythona dystrybuowanego z systemem operacyjnym, użycie metody apt-get install może być w porządku. Jednak w zależności od metody dystrybucji systemu operacyjnego nadal musisz zadać kilka dodatkowych pytań, na przykład „Czy chcę zainstalować wiele wersji tego pakietu?” Jeśli odpowiedź brzmi tak, to prawdopodobnie nie jest dobrym pomysłem używanie czegoś takiego jak apt. Dpkg prawie po prostu rozpakuje archiwum w katalogu głównym systemu plików, więc opiekun pakietu musi upewnić się, że pakiet zostanie bezpiecznie zainstalowany przy bardzo niewielkich założeniach. W przypadku większości pakietów Debiana założyłbym (ktoś może śmiało mnie tutaj poprawić), że po prostu rozpakowują i dostarczają pakiet najwyższego poziomu.

Na przykład załóżmy, że pakiet to „virtualenv”, a otrzymasz /usr/lib/python2.x/site-packages/virtualenv. Jeśli zainstalujesz go za pomocą easy_install, otrzymasz coś takiego, /usr/lib/python2.x/site-packages/virtualenv.egg-linkco może wskazywać na /usr/lib/python2.x/site-packages/virtualenv-1.2-2.x.eggkatalog lub spakowane jajko. Pip robi coś podobnego, chociaż nie używa jajek, a zamiast tego umieści pakiet najwyższego poziomu bezpośrednio w libkatalogu.

Mogę być na ścieżce, ale chodzi o to, że każda metoda bierze pod uwagę inne potrzeby. Dlatego narzędzia takie jak virtualenv są pomocne, ponieważ umożliwiają piaskownicę bibliotek Pythona w taki sposób, że można uzyskać dowolną kombinację bibliotek i wersji, której potrzebujesz.

Setuptools umożliwia również instalowanie pakietów jako multiwersja, co oznacza, że ​​nie jest dule_name.egg-linktworzony pojedynczy mo . Aby zaimportować te pakiety, musisz użyć pkg_resources i __import__funkcji.

Wracając do pierwotnego pytania, jeśli jesteś zadowolony z systemu Python i planujesz używać virtualenv i pip do tworzenia środowisk dla różnych aplikacji, to instalacja virtualenv i / lub pip na poziomie systemu za pomocą apt-get wydaje się całkowicie odpowiednia. Jedno słowo ostrzeżenia jest takie, że jeśli planujesz uaktualnić swoje dystrybucje Pythona, może to mieć efekt falowania na twoich virtualenvach, jeśli połączysz się z pakietami witryny systemu.

Powinienem również wspomnieć, że żadna z tych opcji nie jest z natury lepsza od pozostałych. Po prostu przyjmują różne podejścia. Korzystanie z wersji systemowej to doskonały sposób na instalację aplikacji w języku Python, ale może to być bardzo trudny sposób na programowanie w Pythonie. Łatwa instalacja i konfiguracja narzędzi jest bardzo wygodna w świecie bez virtualenv, ale jeśli potrzebujesz używać różnych wersji tej samej biblioteki, staje się to również dość nieporęczne. Pip i virtualenv działają bardziej jak maszyny wirtualne. Zamiast zajmować się instalowaniem rzeczy obok siebie, po prostu tworzysz zupełnie nowe środowisko. Wadą jest to, że ponad 30 virtualenvów później mogłeś zużywać sporo miejsca na dysku i zaśmiecać swój system plików.

Jak widać, przy wielu opcjach trudno jest powiedzieć, której metody użyć, ale po niewielkim zbadaniu przypadków użycia powinieneś być w stanie znaleźć metodę, która działa.



2

Ponieważ virtualenv zawierają domyślnie pip, prawie nigdy nie instaluję go globalnie. To, co robię, wygląda bardziej jak:

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

Następnie przystępuję do instalacji i konfiguracji virtualenvwrapper według własnych upodobań i zaczynam. warto również rzucić okiem na virtualenv-burrito Jeremy'ego Avneta:

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


Dzięki za połów. ;)
David Gouldin

3
Dlaczego zawracasz sobie głowę python-setuptools, a następnie rozprowadzasz, skoro możesz przejść bezpośrednio do dystrybucji?
lambacck

@lambacck Czy mógłbyś zamieścić to, co opisujesz w osobnej odpowiedzi (nawet jeśli wydaje się to powtarzalne)?
młynek do kawy

2
Nie wspominając o tym, że na jakimkolwiek nowym Ubuntu (a także Debianie? Nie jestem pewien) pakiet „python-setuptools” faktycznie JEST dystrybuowany, więc równie dobrze możesz po prostu pominąć określony krok dystrybucji.
Carl Meyer

@ coffee-młynek do kawy to widelec narzędzi konfiguracyjnych, który zapewnia taką samą funkcjonalność (i więcej). Nie przejmuj się robi "apt-get install python-setuptools" chyba python-setuptools IS rozpowszechnianie (jako Carl wskazuje to może być), w którym to przypadku pomiń kroki 2 i 3.
lambacck

2

@ericholscher mówi na Twitterze: „Ten w oficjalnych dokumentach…”

To świetna uwaga, powinieneś robić to, co mówią doktorzy.

Cytowane z oficjalnych instrukcji instalacji pip na 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 ...

✓ To najlepsza opcja, jeśli nie chcesz polegać na pakietach dystrybucyjnych.
Tobu

2

Zaczynając od pakietów dystrybucyjnych, możesz użyć:

sudo apt-get install python-virtualenv

który pozwala tworzyć virtualenvs lub

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

który pozwala zainstalować dowolne pakiety w katalogu domowym.

Jeśli jesteś przyzwyczajony do virtualenv, pierwsze polecenie zapewnia wszystko, czego potrzebujesz (pamiętaj, że pip jest dołączony i zostanie zainstalowany w każdym utworzonym virtualenv).

Jeśli chcesz tylko zainstalować pakiety, drugie polecenie daje ci to, czego potrzebujesz. Użyj pip w ten sposób:

pip install --user something

i wstaw coś takiego

PATH=~/.local/bin:$PATH

w twoim ~/.bashrc.


Jeśli twoja dystrybucja jest stara i nie chcesz w ogóle używać jej pakietów (prawdopodobnie z wyjątkiem samego Pythona), możesz pobrać virtualenv, jako archiwum lub jako samodzielny skrypt:

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

Jeśli twoja dystrybucja jest bardziej krwawym rodzajem, Python3.3 ma wbudowane możliwości podobne do virtualenv:

python3 -m venv ./venv

Działa to znacznie szybciej, ale setuptools i pip nie są dołączone.


2

Aby zainstalować pip na komputerze Mac (osx), następująca linijka działała świetnie:

sudo easy_install pip

2

W Raspbian nie ma nawet potrzeby wspominać python2.7. Rzeczywiście jest to najlepszy sposób na zainstalowanie pip, jeśli wersja Pythona jest mniejsza niż 2.7.9.

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

Dzięki @ tal-weiss



1

Używam get-pip i virtualenv-burrito, żeby to wszystko zainstalować. Nie jestem pewien, czy jest wymagane 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

Pierwsza metoda jest w porządku. Jedynym problemem, jaki widzę, jest to, że możesz skończyć ze starą wersją setuptools (jeśli repozytorium apt nie było aktualizowane.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.