zaktualizowano: 2019-05-11: W tym poście głównie wspomniano virtualenv
, ale zgodnie z dokumentacją Pythona dotyczącą instalacji modułu , ponieważ Python 3.5 „użycie venv
jest teraz zalecane do tworzenia środowisk wirtualnych”, podczas gdy virtualenv
jest alternatywą dla wersji Pythona wcześniejszych niż 3.4 .
aktualizacja: 2018-08-17: od Conda-4.4.0 użytku conda
do activate
anakonda na wszystkich platformach
aktualizacja: 27.03.2017: PEP 513 - manylinux
pliki binarne dla PyPI
zaktualizowano: 19.08.2016: Opcja Continuum Anaconda
Jest to w pewnym sensie duplikat easy_install / pip lub apt-get .
W przypadku globalnych pakietów Python użyj Centrum Ubuntu, apt, apt-get lub synaptic
Ubuntu używa Pythona do wielu ważnych funkcji, dlatego zakłócanie działania Pythona może uszkodzić system operacyjny. To jest główny powód, nigdy nie używać pip
w moim systemie Ubuntu, ale zamiast używać zarówno Centrum Oprogramowania Ubuntu, Synaptic , apt-get
lub po prostu nowsza apt
, które domyślnie instalować pakiety z repozytorium Ubuntu . Te pakiety są testowane, zwykle wstępnie skompilowane, więc instalują się szybciej i ostatecznie są zaprojektowane dla Ubuntu. Ponadto instalowane są również wszystkie wymagane zależności i prowadzony jest dziennik instalacji, aby można je było przywrócić. Myślę, że większość pakietów ma odpowiadające repozytoria Launchpad, więc możesz zgłaszać problemy.
Innym powodem korzystania z jednego z pakietów Ubuntu jest to, że czasami te pakiety Python mają różne nazwy w zależności od tego, skąd je pobrałeś. Python-chardet to przykład pakietu, który kiedyś został nazwany jedną rzeczą w PyPI i inną rzeczą w repozytorium Ubuntu. Dlatego robienie czegoś podobnego pip install requests
nie uświadomi sobie, że chardet jest już zainstalowany w twoim systemie, ponieważ wersja Ubuntu ma inną nazwę, a zatem instaluje nową wersję, która uszkodzi twój system w nieznaczny, nieznaczący sposób, ale nadal dlaczego to zrobiłeś.
Ogólnie rzecz biorąc, chcesz zainstalować tylko zaufany kod w swoim systemie operacyjnym. Tak powinno być nerwowy o wpisywanie $ sudo pip <anything-could-be-very-bad>
.
Wreszcie niektóre rzeczy są po prostu łatwiejsze do zainstalowania przy użyciu jednego z pakietów Ubuntu. Na przykład, jeśli spróbujesz pip install numpy
zainstalować numpy & scipy, chyba że zainstalowałeś już gfortran, atlas-dev, blas-dev i lapack-dev, zobaczysz niekończący się strumień błędów kompilacji. Jednak instalacja numpy & scipy za pośrednictwem repozytorium Ubuntu jest tak prosta, jak ...
$ sudo apt-get install python-numpy python-scipy
Masz szczęście, ponieważ używasz Ubuntu, jednej z najczęściej obsługiwanych i często aktualizowanych istniejących dystrybucji. Najprawdopodobniej każdy potrzebny pakiet Pythona znajduje się w repozytorium Ubuntu i prawdopodobnie jest już zainstalowany na twoim komputerze. Co 6 miesięcy ukaże się nowy cykl pakietów z najnowszą dystrybucją Ubuntu.
Jeśli masz 100% pewności, że pakiet nie będzie w żaden sposób kolidował z systemem Ubuntu, możesz zainstalować go za pomocą pipa, a Ubuntu jest na tyle fajne, aby oddzielić te pakiety od pakietów dystrybucyjnych, umieszczając pakiety dystrybucyjne w folderze o nazwie dist-packages/
. Repozytorium Ubuntu zawiera zarówno pip, virtualenv, jak i setuptools. Opieram się jednak na sugestii Wojciecha, by użyć virtualenv.
Do osobistych projektów Pythona używaj pip i wheel w virtualenv
Jeśli potrzebujesz najnowszej wersji lub modułu nie ma w repozytorium Ubuntu, uruchom virtualenv i użyj pipa, aby zainstalować pakiet. Mimo że pip i setuptools się połączyły, IMO pip jest lepszy niż łatwy w instalacji lub distutils, ponieważ zawsze będzie czekał, aż pakiet zostanie całkowicie pobrany i zbudowany, zanim skopiuje go do systemu plików, i sprawia, że aktualizacja lub odinstalowanie jest dziecinnie proste. Pod wieloma względami jest podobny do apt-get, ponieważ ogólnie dobrze radzi sobie z zależnościami. Jednak być może będziesz musiał poradzić sobie z niektórymi zależnościami, ale odkąd PEP 513 został przyjęty, teraz w Pythonie Package Index (PyPI) istnieją pliki binarne dla popularnych dystrybucji Linuksa, takich jak Ubuntu i Fedora .manylinux
na przykład, jak wspomniano powyżej dla NumPy i SciPy, upewnij się, że zainstalowałeś gfortran, atlas-dev, blas-dev i lapack-dev z repozytorium Ubuntu Na przykład, zarówno NumPy , jak i SciPy są teraz domyślnie dystrybuowane dla Ubuntu jako manylinux
koła za pomocą OpenBLAS zamiast ATLAS. Nadal możesz je budować ze źródła, używając opcji pip --no-use-wheel
lub--no-binary <format control>
.
~$ sudo apt-get install gfortran libblas-dev liblapack-dev libatlas-dev python-virtualenv
~$ mkdir ~/.venvs
~$ virtualenv ~/.venvs/my_py_proj
~$ source ~/.venvs/my_py_proj/bin/activate
~(my_py_proj)$ pip install --no-use-wheel numpy scipy
Zobacz następną sekcję „Nie jesteś w sudoers
” poniżej, aby zainstalować zaktualizowane wersje pipa, setuptools, virtualenv lub kół do swojego profilu osobistego przy użyciu --user
schematu instalacji z pipem. Możesz użyć tego do aktualizacji pipa na własny użytek, jak JF Sebastian wskazał w swoim komentarzu do innej odpowiedzi . UWAGA: -m
tak naprawdę jest to konieczne tylko w MS Windows podczas aktualizacji pip .
python -m pip install --user pip setuptools wheel virtualenv
Nowsze wersje pipa automatycznie buforują koła, więc poniższe informacje są przydatne tylko dla starszych wersji pip. Ponieważ może się to zdarzyć instalować wiele razy, rozważ użycie koła z pipem do stworzenia sterówki. Koło jest już zawarte w wersji virtualenv
13.0.0, dlatego jeśli twoja wersja virtualenv
jest za stara, być może trzeba najpierw zainstalować koło.
~(my_py_proj)$ pip install wheel # only for virtualenv < v13.0.0
~(my_py_proj)$ pip wheel --no-use-wheel numpy scipy
Spowoduje to utworzenie plików binarnych koła <cwd>/wheelhouse
, użyj -d
do określenia innego katalogu. Teraz, jeśli uruchomisz kolejną wirtualną wersję i potrzebujesz tych samych pakietów, które już zbudowałeś, możesz zainstalować je ze sterówkipip install --find-links=<fullpath>/wheelhouse
Przeczytaj Instalowanie modułów Python w dokumentacji Python i Instalowanie pakietów na stronie głównej indeksu pakietów Python . Również pip , venv , virtualenv i koło .
Jeśli nie jesteś w sudoers
i virtualenv
nie jest zainstalowany.
Inna opcja korzystania ze środowiska wirtualnego lub jeśli używasz udziału Linux bez uprawnień roota, to użycie schematów instalacyjnych --user
lub --home=<wherever-you-want>
Python z Pythonem distutils
zainstaluje pakiety do wartości site.USERBASE
lub do dowolnego miejsca. Nowsze wersje pipa mają również --user
opcję. Nie używaj sudo
!
pip install --user virtualenv
Jeśli wersja Linux PIP jest zbyt stary, potem można przekazać za pomocą opcji konfiguracji --install-option
, który jest przydatny do przekazywania niestandardowe opcje do pewnych setup.py
skryptów dla niektórych pakietów rozszerzeń budować, takie jak ustawienie PREFIX
. Może być konieczne wyodrębnienie dystrybucji i użycie jej distutils
do zainstalowania pakietu w oldschoolowy sposób, pisząc python setup install [options]
. Pomocne może się okazać przeczytanie dokumentacji instalacyjnej i distutils
dokumentacji .
Python jest wystarczająco miły, aby dodawać site.USERBASE
do twojej PYTHONPATH
przewagi nad czymkolwiek innym, więc zmiany wpłyną tylko na ciebie. Popularną lokalizacją --home
jest ~/.local
. Zobacz instrukcję instalacji modułu Python , aby uzyskać dokładną strukturę plików i miejsce, w którym znajdują się pakiety witryny. Uwaga : w przypadku korzystania z --home
programu instalacyjnego, a następnie może być konieczne, aby dodać go do PYTHONPATH
zmiennej środowiskowej stosując export
w swojej .bashrc
, .bash_profile
lub w powłoce dla lokalnych pakietów będzie dostępna w Pythonie.
Używaj Continuum Anaconda Python do matematyki, nauki, danych lub projektów osobistych
Jeśli używasz Pythona do matematyki, nauki lub danych, IMO naprawdę dobrą opcją jest Anaconda-Python Distribution lub bardziej podstawowa dystrybucja miniconda wydana przez Anaconda, Inc. (wcześniej znana jako Continuum Analytics ) . Chociaż każdy może skorzystać z Anacondy do osobistych projektów, domyślna instalacja zawiera ponad 500 pakietów matematycznych i naukowych, takich jak NumPy, SciPy, Pandas i Matplotlib , podczas gdy miniconda instaluje tylko Anaconda-Python i menedżera środowiska conda. Anaconda instaluje się tylko w twoim osobistym profilu, tj .: /home/<user>/
i zmienia twoją ~/.bashrc
lub ~/.bash_profile
przedłuża ścieżkę Anacondy do twoich osobistych $PATH
rekomendacji pozyskiwaniaconda.sh
w twoim, ~/.bashrc
który pozwala ci użyć conda activate <env|default is base>
do uruchomienia anakondy - dotyczy to tylko ciebie - twoja ścieżka systemowa pozostaje niezmieniona . W związku z tym zrobisz nie potrzebują dostępu korzeń lub sudo
korzystać Anaconda! Jeśli już dodałeś Anaconda-Python, miniconda lub conda do swojej osobistej ścieżki, powinieneś usunąć PATH
eksport ze swojej ~/.bashrc
i zaktualizować do nowej rekomendacji , aby Python systemowy był ponownie pierwszy.
Jest to nieco podobne do --user
opcji, którą wyjaśniłem w ostatniej sekcji, z tą różnicą, że dotyczy Pythona jako całości, a nie tylko pakietów. Dlatego Anaconda jest całkowicie oddzielna od twojego systemowego Pythona , nie będzie zakłócać twojego systemowego Pythona i tylko Ty możesz go używać lub zmieniać. Ponieważ instaluje nową wersję Pythona i wszystkich jego bibliotek, potrzebujesz co najmniej 200 MB miejsca, ale jest bardzo sprytny w buforowaniu bibliotek i zarządzaniu nimi, co jest ważne dla niektórych fajnych rzeczy, które możesz zrobić z Anacondą.
Anaconda organizuje zbiór plików binarnych i bibliotek Pythona wymaganych przez zależności w repozytorium online (wcześniej nazywanym binstar ) , a także hostuje pakiety użytkowników jako różne „kanały”. Menedżer pakietów używany przez Anacondę conda
domyślnie instaluje pakiety z Anacondy, ale możesz zasygnalizować inny „kanał” używając tej -c
opcji.
Instalować pakiety z conda
jak pip
:
$ conda install -c pvlib pvlib # install pvlib pkg from pvlib channel
Ale conda
może zrobić o wiele więcej! Może także tworzyć i zarządzać wirtualnymi środowiskami tak jak virtualenv
. Dlatego, ponieważ Anaconda tworzy środowiska wirtualne, pip
menedżera pakietów można użyć do zainstalowania pakietów z PyPI w środowisku Anaconda bez rootowania lub sudo
. Czy nie korzystać sudo
z Anaconda! Ostrzeżenie! Czy być ostrożny podczas mieszania pip
i conda
w środowisku Anaconda, b / c trzeba będzie bardziej ostrożnie zarządzać zależnościami pakietów. Inną opcją pip
w środowisku conda jest użycie kanału conda-forge, ale najlepiej też zrobić to w świeżym środowisku conda z domyślnym kanałem conda-forge. W ostateczności, jeśli nie możesz znaleźć pakietu nigdzie poza PyPI, rozważ użycie, --no-deps
a następnie ręcznie zainstaluj pozostałe zależności conda
.
Anaconda jest również pod pewnymi względami podobna do Ruby RVM, jeśli znasz to narzędzie. Anaconda conda
pozwala także tworzyć środowiska wirtualne z różnymi wersjami Pythona . np . : conda create -n py35sci python==3.5.2 numpy scipy matplotlib pandas statsmodels seaborn
utworzy stos danych naukowych / naukowych przy użyciu języka Python-3.5 w nowym środowisku o nazwie py35sci
. Możesz przełączać środowiska za pomocą conda
. Od Conda-4.4.0, jest teraz inna na virtualenv
który używa source venv/bin/activate
, ale poprzedni do Conda-4.4.0 te conda
polecenia były takie same , jak virtualenv
i również używane source
:
# AFTER conda-4.4
~/Projects/myproj $ conda activate py35sci
# BEFORE conda-4.4
~/Projects/myproj $ source activate py35sci
Ale czekaj, jest więcej! Anaconda może także instalować różne języki, takie jak R do programowania statystycznego z kanału Anacondar
. Możesz nawet skonfigurować własny kanał do przesyłania dystrybucji pakietów zbudowanych dla conda . Jak wspomniano, conda-forge utrzymuje zautomatyzowane kompilacje wielu pakietów na PyPI na kanale Anaconda conda-forge .
Epilog
Istnieje wiele opcji utrzymania projektów Python w systemie Linux w zależności od osobistych potrzeb i dostępu. Jeśli jednak jest jedna rzecz, mam nadzieję, że odejmiesz od tej odpowiedzi, to prawie nigdy nie powinieneś używać sudo
do instalowania pakietów Pythona . Korzystanie z sudo
powinno być dla ciebie zapachem , że coś jest nie tak. Zostałeś ostrzeżony.
Powodzenia i szczęśliwego kodowania!