Krótkie pytanie
- Co to jest właściwy sposób zainstalować
pip
,virtualenv
idistribute
?
tło
W mojej odpowiedzi na SO pytanie 4314376 zaleciłem użycie ez_setup
, abyś mógł następnie zainstalować pip
i wykonaćvirtualenv
następujące czynności:
curl -O http://peak.telecommunity.com/dist/ez_setup.py
sudo python ez_setup.py
sudo easy_install pip
sudo pip install virtualenv
Pierwotnie wyciągnąłem te instrukcje z postu na blogu Jesse Nollera. Więc chcesz używać Pythona na komputerze Mac? . Podoba mi się pomysł utrzymania czystego globalnego katalogu pakietów stron, więc jedyne inne pakiety, które tam instaluję, to virtualenvwrapper
i distribute
. (Ostatnio dodałem distribute
do mojego zestawu narzędzi z powodu tego ogłoszenia usługi publicznej w języku Python . Aby zainstalować te dwa pakiety, użyłem:
sudo pip install virtualenvwrapper
curl -O http://python-distribute.org/distribute_setup.py
sudo python distribute_setup.py
Nigdy więcej setuptools i easy_install
Aby naprawdę postępować zgodnie z tym ogłoszeniem usługi publicznej w języku Python , podczas nowej instalacji języka Python wykonałbym następujące czynności:
curl -O http://python-distribute.org/distribute_setup.py
sudo python distribute_setup.py
sudo easy_install pip
sudo pip install virtualenv
sudo pip install virtualenvwrapper
Upomnienie Glypha
W komentarzu do mojej odpowiedzi na SO pytanie 4314376 użytkownik SO SO Glif stwierdził:
NIE. NIGDY NIGDY nie rób
sudo python setup.py install
niczego. Napisz ~ / .pydistutils.cfg, który umieści instalację pip w ~ / .local lub coś takiego. Zwłaszcza pliki o nazwieez_setup.py
mają tendencję do zasysania nowszych wersji rzeczy, takich jak setuptools i easy_install, które mogą potencjalnie uszkodzić inne elementy systemu operacyjnego.
Powrót do krótkiego pytania
Tak więc odpowiedź Glifa prowadzi mnie do mojego pierwotnego pytania:
- Co to jest właściwy sposób zainstalować
pip
,virtualenv
idistribute
?
źródło
python distribute_setup.py
następnieeasy_install pip
ivirtualenv --distribute venv
? (patrz python-guide.readthedocs.org/en/latest/starting/install/… ), a jeśli tak, to dlaczego?sudo apt-get install python-{pip,virtualenv}
???pip
,virtualenv
i Python PSA.http://python-distribute.org/distribute_setup.py
przekierowuje do 404 :(Odpowiedzi:
Możesz to zrobić bez instalowania czegokolwiek w samym pythonie.
Nie potrzebujesz sudo ani żadnych przywilejów.
Nie musisz edytować żadnych plików.
Zainstaluj virtualenv w środowisku wirtualnym bootstrap. Użyj tego wirtualnego środowiska, aby stworzyć więcej. Ponieważ virtualenv jest dostarczany z pipem i dystrybucją, wszystko dostajesz z jednej instalacji.
Oto przykład w bash:
Teraz możesz użyć środowiska „bootstrap”, aby stworzyć więcej:
Oszalej!
Uwaga
Zakłada się, że nie używasz naprawdę starej wersji virtualenv. Stare wersje wymagały flag
--no-site-packges
(i zależnie od wersji Pythona--distribute
). Teraz możesz stworzyć swoje środowisko ładujące za pomocąpython virtualenv.py path-to-bootstrap
lubpython3 virtualenv.py path-to-bootstrap
.źródło
python virtualenv.py TARGET_DIRECTORY
robi to samo.virtualenv
nie wymagają opcji „--no-site-packages --distribute”. Wymagane--system-site-packages
może być coś przeciwnegocurl -Lo virtualenv-tmp.tar.gz 'https://github.com/pypa/virtualenv/tarball/master'
virtualenvwrapper
? Dokumenty ostrzegają szczególnie, aby nie instalować go w virtualenv (choć wydaje się, że działa ).Myślę, że Glif oznacza coś takiego:
~/.local
, jeśli jeszcze nie istnieje.~/.bashrc
upewnić się, że~/.local/bin
jestPATH
i że~/.local
jest onPYTHONPATH
.Utwórz plik,
~/.pydistutils.cfg
który zawieraJest to standardowy plik w formacie ConfigParser.
Pobierz
distribute_setup.py
i uruchompython distribute_setup.py
(niesudo
). Jeśli narzeka na nieistniejącesite-packages
katalog, utwórz go ręcznie:mkdir -p ~ / .local / lib / python2.7 / site-packages /
Uruchom,
which easy_install
aby sprawdzić, czy pochodzi~/.local/bin
pip install virtualenv
pip install virtualenvwrapper
~/.virtualenvs
W
~/.bashrc
dodatkuTo wszystko, nie ma żadnego zastosowania,
sudo
a twoje środowisko Python jest~/.local
całkowicie oddzielone od Pythona w systemie operacyjnym. Oświadczenie: Nie jestem pewien, jak kompatybilnyvirtualenvwrapper
jest w tym scenariuszu - nie mogłem go przetestować na moim systemie :-)źródło
easy_install pip
Jeśli wykonasz kroki wskazane w kilku samouczkach, które podłączyłem w tej odpowiedzi , możesz uzyskać pożądany efekt bez nieco skomplikowanych kroków „manualnych” w odpowiedziach Walkera i Vinaya. Jeśli korzystasz z systemu Ubuntu:
Odpowiednik osiąga się w OS X za pomocą homebrew do zainstalowania Pythona (więcej szczegółów tutaj ).
Po
pip
zainstalowaniu możesz użyć go, aby uzyskać pozostałe pakiety (możesz pominąćsudo
w OS X, ponieważ używasz lokalnej instalacji Pythona).(są to jedyne pakiety, które musisz zainstalować na całym świecie i wątpię, aby kolidowały z jakimkolwiek systemem na poziomie systemu. Jeśli chcesz być super bezpieczny, możesz zachować wersje dystrybucji
sudo apt-get install virtualenvwrapper
)Uwaga: w Ubuntu 14.04 pojawiają się błędy podczas instalacji pip , więc używam
pip3 install virtualenv virtualenvwrapper
i dodamVIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
do mojego.bashrc/.zshrc
pliku.Następnie dołączasz do swojego
.bashrc
plikui zrób to
To jest w zasadzie to. Teraz jedyną decyzją jest to, czy chcesz utworzyć virtualenv w celu uwzględnienia pakietów na poziomie systemu
tam gdzie nie trzeba ponownie instalować istniejących pakietów systemowych, są one dowiązane symbolicznie do wersji interpretera systemu. Uwaga: wciąż możesz instalować nowe pakiety i aktualizować istniejące pakiety zawarte w systemie bez sudo - przetestowałem go i działa bez żadnych zakłóceń interpretera systemu.
Alternatywą jest, jeśli chcesz całkowicie oddzielić środowisko
lub biorąc pod uwagę, że jest to opcja domyślna, po prostu
W rezultacie masz nową wirtualną wersję, w której możesz swobodnie i bezzwłocznie instalować swoje ulubione pakiety
źródło
export WORKON_HOME="$HOME/.virtualenvs"
?brew install python
wciąga pip + setuptools). To podejście działa dla mnie dobrze. Ponadto skupienie się na pipie wydaje się być również przyszłym rozwiązaniem w zakresie pakietów Pythona.WORKON_HOME
domyślnie~/.virtualenvs
tak. W/usr/local/bin/virtualenvwrapper.sh
tych zestawach jest liniaworkon_home_dir="$HOME/.virtualenvs"
if [ "$workon_home_dir" = "" ]
.pip install virtualenv virtualenv-wrapper
linią zapip install --upgrade distribute
pomocą aktywowanego virtualenv, w którym następnie zainstalowałem pyopencl. Dodałem równieżexport PROJECT_HOME="$HOME/src"
do mojego bashrc, aby włączyć fajnemkproject
narzędzie venv.Python 3.4 i nowsze
Python 3.3 dodaje moduł venv , a Python 3.4 dodaje moduł surepip . Dzięki temu pip ładujący jest tak prosty, jak:
Być może poprzedza to wezwanie
venv
do zrobienia tego w środowisku wirtualnym.Gwarantowana pipsa jest opisana w PEP 453 .
źródło
W systemie Ubuntu:
sudo apt-get install python-virtualenv
Pakiet
python-pip
jest zależny, więc zostanie również zainstalowany.źródło
pip
, najlepiej wvirtualenv
, i nigdy nie używaćsudo
żadnego z nichpip
czasami zawierają znaczące błędy, więc często używamget-pip.py
podanego na python.org.Zrobiłem tę procedurę, abyśmy mogli z niej korzystać w pracy.
Kluczowe kwestie dla bezpieczeństwa:
źródło
Aktualizacja: od lipca 2013 r. Projekt nie jest już obsługiwany. Autor sugeruje użycie pyenv . (pyenv nie ma wbudowanego wsparcia dla virtualenv, ale dobrze się z nim gra).
Pythonbrew to menedżer wersji dla Pythona i jest wyposażony w obsługę virtualenv.
Po zainstalowaniu Pythonbrew i wersji Pythona przy użyciu venvs jest naprawdę łatwe:
źródło
pyenv
, która działa dobrze.Nie ma problemu z instalacją sudo python setup.py, jeśli jesteś pewien, że chcesz to zrobić.
Różnica polega na tym, że użyje katalogu pakietów witryny w systemie operacyjnym jako miejsca docelowego kopiowania plików .py.
więc jeśli chcesz, aby pip był dostępny w szerokim zakresie, prawdopodobnie jest to właściwy sposób. Nie twierdzę, że inne sposoby są złe, ale prawdopodobnie jest to dość sprawiedliwe.
źródło
pip freeze
prawie mnie zamroziło - lista pakietów instalowanych w systemie była zdecydowanie za długa. Od tego czasu zdecydowanie zalecam instalowanie pakietu python „no sudo” i „no os-wide”.Zainstaluj ActivePython . Obejmuje pip, virtualenv i Distribution.
źródło
Ostatnio spotkałem ten sam problem. Staję się bardziej stronniczy w sposobie myślenia „zawsze używaj virtualenv”, więc moim problemem było zainstalowanie virtualenv z pipem bez instalowania dystrybucji do mojego globalnego katalogu lub pakietów stron użytkownika. Aby to zrobić, ręcznie pobrałem distribute, pip i virtualenv, i dla każdego uruchomiłem „python setup.py install --prefix ~ / .local / python-private” (z tymczasowym ustawieniem PYTHONPATH = ~ / .local / python-private), aby skrypty instalacyjne mogły znaleźć dystrybucję). Przeniosłem skrypt virtualenv do innego katalogu, który mam na PATH i poddałem go edycji, tak aby moduły dystrybucji i virtualenv można było znaleźć na sys.path. Tada: Nie zainstalowałem niczego w katalogu / usr, / usr / local ani w moich pakietach witryn użytkownika, ale mogę uruchomić virtualenv w dowolnym miejscu, aw tym virtualenv dostaję pip.
źródło
Miałem różne problemy (patrz poniżej) instalowania zaktualizowanych modułów SSL, nawet wewnątrz virtualenv, na starszych wersjach języka Python dostarczonych przez system operacyjny, więc teraz używam
pyenv
.pyenv ułatwia instalację nowych wersji Pythona i obsługuje virtualenvs. Rozpoczęcie pracy jest znacznie łatwiejsze niż przepisy na virtualenv wymienione w innych odpowiedziach:
brew install pyenv
i na Linuksie użyj instalatora pyenvDziała to bardzo dobrze, aby odizolować wersję „nowego Pythona” i virtualenv od systemowego Pythona. Ponieważ możesz z łatwością korzystać z nowszego Pythona (post 2.7.9), moduły SSL są już uaktualnione i, oczywiście, jak każda nowoczesna konfiguracja virtualenv, jesteś izolowany od systemowych modułów Python.
Kilka fajnych samouczków:
pyenv global 3.6.1
(z globalnego do bieżącego użytkownika) lubpyenv local 2.7.13
(z lokalnego do bieżącego katalogu).pyenv-virtualenv
Wtyczka jest teraz wbudowany - rodzajpyenv commands | grep virtualenv
sprawdzenia. Na początek nie użyłbym wtyczki pyenv-virtualenvwrapper - zobacz, jak radzisz sobie z pyenv-virtualenv, który jest bardziej zintegrowany z pyenv, ponieważ obejmuje on większość tego, co robi virtualenvwrapper.pyenv
jest wzorowany narbenv
(dobre narzędzie do przełączania wersji Ruby), a jego jedyną zależnością jest bash.pyvenv
- jest to odpowiednik virtualenv, który jest częścią ostatnich wersji Python 3 i nie obsługuje przełączania wersji PythonOstrzeżenia
Dwa ostrzeżenia o pyenv:
dash
, która jest dostępna/bin/sh
na Ubuntu lub Debianie.bash --login
pomocą terminala), co nie zawsze jest łatwe do osiągnięcia dzięki narzędziom do automatyzacji, takim jak Ansible .Dlatego pyenv jest najlepszy do użytku interaktywnego, a mniej dobry do serwerów skryptowych.
Problemy z modułem SSL
Jednym z powodów, dla których warto skorzystać,
pyenv
jest to, że często występują problemy z aktualizacją modułów SSL Pythona podczas korzystania ze starszych wersji Python dostarczonych przez system:źródło
Możesz to zrobić bez instalowania czegokolwiek w samym pythonie.
Nie potrzebujesz sudo ani żadnych przywilejów.
Nie musisz znajdować najnowszej wersji
virtualenv
pliku tarNie musisz edytować informacji o wersji w skrypcie bash, aby zachować aktualność.
Nie musisz
curl
/wget
lubtar
instalowane, anipip
czyeasy_install
działa to zarówno w wersji 2.7, jak i 3.X
Zapisz następujące dane w
/tmp/initvenv.py
:z przyszłego importu funkcja print_funkcja
i użyj go jako
np. (jeśli naprawdę potrzebujesz
distribute
warstwy zgodnościsetuptools
)Pamiętaj, że w starszych wersjach Pythona może to dać ci
InsecurePlatformWarning
s¹.Gdy masz już virtualenv (nazwa np.
venv
), Możesz skonfigurować innego virtualenv, używającvirtualenv
właśnie zainstalowanej:virtualenvwrapper
Polecam również przyjrzeć się virtualenvwrapper , po jednorazowej konfiguracji:
i aktywacja (można to zrobić za pomocą skryptu logowania):
możesz robić takie rzeczy jak:
¹ Nie znalazłem sposobu na stłumienie ostrzeżenia. Można to rozwiązać w
pip
i / lubrequest
, ale programiści wskazują na siebie jako przyczynę. Otrzymałem często nierealistyczne zalecenie uaktualnienia używanej wersji Pythona do najnowszej wersji. Jestem pewien, że to zepsuje np. Moją instalację Linux Mint 17. Na szczęściepip
buforuje pakiety, więc Ostrzeżenie jest tworzone tylko raz na instalację pakietu.źródło
InsecurePlatformWarning
(tj. Ostrzeżenie, jeśli Python jest starszy niż wersja 2.7.9) można naprawić, instalując dodatkowe pakiety pyopenssl, pyasn1, ndg-httpsclient z PyPI. (Jest to obsługa SSL, dekodowanie certyfikatów, https przez PyOpenSSL.) Bez odpowiednich protokołów naprawdę nie jest wystarczająco bezpieczny, aby pobrać i uruchomić dowolny kod.Dobre instrukcje znajdują się na oficjalnej stronie Virtualenv. https://pypi.python.org/pypi/virtualenv
Zasadniczo to, co zrobiłem, to instalacja za
pip
pomocąsudo easy_install pip
, a następnie użycie, asudo pip install virtualenv
następnie utworzenie środowiska za pomocą:virtualenv my_env
(nazwij to, co chcesz), zgodnie z tym, co zrobiłemvirtualenv --distribute my_env
:; które zainstalowałemdistribute
ipip
na moim virtualenv.Ponownie postępuj zgodnie z instrukcjami na
virtualenv
stronie.Niby kłopot, pochodzący z Ruby; P
źródło
Oto dobry sposób na zainstalowanie virtualenvwrapper (aktualizacja tego ).
Pobierz virtualenv-1.11.4 (najnowsze można znaleźć tutaj ), Rozpakuj, otwórz
terminal
To jest to, teraz możesz użyć
mkvirtualenv env1
,lsvirtualenv
itpUwaga: możesz usunąć
virtualenv-1.11.4
ivirtualenv-1.11.4.zip
z folderów pobranych.źródło
Dobrą wiadomością jest to, że jeśli zainstalowałeś Python3.4, pyvenv jest już zainstalowany. Więc tylko
Teraz w tej wirtualnej środowisku możesz użyć pip do zainstalowania modułów dla tego projektu.
Zostaw to wirtualne środowisko
źródło