Jaki jest najbardziej zgodny sposób instalowania modułów Pythona na komputerze Mac?

125

Zaczynam uczyć się Pythona i go uwielbiam. Pracuję głównie na Macu, a także na Linuksie. Stwierdzam, że w systemie Linux (głównie Ubuntu 9.04), kiedy instaluję moduł Pythona za pomocą apt-get, działa dobrze. Mogę go bez problemu zaimportować.

Na Macu jestem przyzwyczajony do używania Macports do instalowania wszystkich rzeczy Unixy. Jednak stwierdzam, że większość modułów Pythona, które instaluję z nim, nie jest widoczna dla Pythona. Spędziłem trochę czasu bawiąc się ustawieniami PATH i używając python_select. Nic tak naprawdę nie zadziałało iw tym momencie nie rozumiem, zamiast tego po prostu grzebię.

Mam wrażenie, że Macports nie jest powszechnie lubiany do zarządzania modułami Pythona. Chciałbym zacząć od nowa, stosując bardziej „akceptowane” (jeśli to właściwe słowo) podejście.

Tak więc zastanawiałem się, jaką metodę używają programiści Mac Python do zarządzania swoimi modułami?

Pytania dodatkowe:

Czy korzystasz z Pythona firmy Apple, czy innej wersji? Czy kompilujesz wszystko ze źródeł, czy też istnieje menedżer pakietów, który działa dobrze (Fink?).

GloryFish
źródło
Jakiś
Todd Gamblin
7
MacPorts jest idealne dla Pythona na Macu. UWAGA: musisz zainstalować pakiety Pythona przez MacPorts, aby zostały zainstalowane w instalacji MacPorts Python. Możesz także instalować pakiety bez używania MacPorts; jednakże musisz ustawić tę wersję pythona jako domyślną poprzez python_select PRZED zainstalowaniem pakietu. Jeśli zainstalujesz pakiet, a następnie użyjesz python_select, nie zrobi to różnicy, ponieważ zostanie zainstalowany w dowolnej wersji Pythona, która była domyślna w momencie instalacji.
Michael Aaron Safyan

Odpowiedzi:

144

Najpopularniejszym sposobem zarządzania pakietami Pythona (jeśli nie używasz menedżera pakietów systemowych) jest użycie setuptools i easy_install. Prawdopodobnie jest już zainstalowany w twoim systemie. Użyj tego w ten sposób:

easy_install django

easy_install używa Python Package Index, który jest niesamowitym źródłem informacji dla programistów Pythona. Rozejrzyj się, aby zobaczyć, jakie pakiety są dostępne.

Lepszą opcją jest pip , który zyskuje na popularności, ponieważ próbuje naprawić wiele problemów związanych z easy_install. Pip używa tego samego repozytorium pakietów co easy_install, po prostu działa lepiej. Naprawdę jedyny czas potrzebny do użycia easy_install jest dla tego polecenia:

easy_install pip

Następnie użyj:

pip install django

W pewnym momencie prawdopodobnie będziesz chciał dowiedzieć się trochę o virtualenv . Jeśli dużo pracujesz w Pythonie w projektach o sprzecznych wymaganiach dotyczących pakietów, virtualenv jest wybawieniem. Pozwoli ci to mieć zupełnie różne wersje różnych pakietów i łatwo przełączać się między nimi w zależności od potrzeb.

Jeśli chodzi o to, którego Pythona użyć, trzymanie się Pythona firmy Apple przyniesie najmniej bólu głowy, ale jeśli potrzebujesz nowszej wersji (wierzę, że Leopard to 2.5.1), wybrałbym python 2.6.

szósty bieg
źródło
5
Niedawno przebudowałem swój komputer i przerzuciłem się na używanie tylko Homebrew i PIP, nagle wszystkie problemy z kompilacją, które miałem, zniknęły.
GloryFish
42

Twoje pytanie ma już trzy lata, a inne odpowiedzi nie zawierają pewnych szczegółów:

Większość ludzi, których znam, używa HomeBrew lub MacPorts , wolę MacPorts ze względu na jego czysty wygląd domyślnego środowiska Mac OS X i moją konfigurację programistyczną. Po prostu przenieś swój folder / opt i przetestuj swoje pakiety w normalnym środowisku użytkownika Python

MacPorts jest przenośne tylko na Macu, ale dzięki easy_install lub pip dowiesz się, jak skonfigurować swoje środowisko na dowolnej platformie (Win / Mac / Linux / Bsd ...). Ponadto zawsze będzie bardziej aktualny i będzie zawierał więcej pakietów

Osobiście pozwalam MacPorts obsługiwać moje moduły Pythona, aby wszystko było aktualizowane. Jak każdy inny menedżer pakietów wysokiego poziomu (np. Apt-get), jest on znacznie lepszy w przypadku ciężkich modułów z dużą ilością zależności binarnych. Nie ma sposobu, bym zbudował moje wiązania Qt (PySide) za pomocą easy_install lub pip. Qt jest ogromny i wymaga dużo czasu na kompilację. Jeśli potrzebujesz pakietu w Pythonie, który wymaga biblioteki używanej przez programy inne niż Python, staraj się unikać easy_install lub pip

W pewnym momencie zauważysz, że w MacPorts brakuje niektórych pakietów. Nie wierzę, że MacPorts kiedykolwiek da Ci cały CheeseShop . Na przykład ostatnio potrzebowałem modułu Elixir , ale MacPorts oferuje tylko py25-elixir i py26-elixir, bez wersji py27. W takich przypadkach masz:

pip-2.7 install --user elixir

(upewnij się, że zawsze wpisujesz pip- (wersja))

To stworzy dodatkową bibliotekę Pythona w twoim katalogu domowym. Tak, Python będzie działał z więcej niż jedną lokalizacją biblioteki: jedną kontrolowaną przez MacPorts i lokalną użytkownika dla wszystkiego, czego brakuje w MacPorts.

Teraz zauważ, że wolę pip niż easy_install. Jest dobry powód, dla którego powinieneś unikać setuptools i easy_install. Oto dobre wyjaśnienie i staram się trzymać od nich z daleka. Jedną z bardzo przydatnych funkcji pip jest dostarczanie listy wszystkich modułów (wraz z ich wersjami), które zainstalowałeś za pomocą MacPorts, easy_install i samego pip:

pip-2.7 zamrozić

Jeśli zacząłeś już korzystać z easy_install, nie martw się, pip może rozpoznać wszystko, co zostało już zrobione przez easy_install, a nawet zaktualizować zainstalowane wraz z nim pakiety.

Jeśli jesteś programistą, miej oko na virtualenv do kontrolowania różnych konfiguracji i kombinacji wersji modułów. Inne odpowiedzi już o tym wspominają, o czym do tej pory nie wspomniano, to moduł Tox , narzędzie do testowania poprawności instalacji pakietu w różnych wersjach Pythona.

Chociaż zwykle nie mam konfliktów wersji, lubię mieć virtualenv, aby skonfigurować czyste środowisko i uzyskać jasny obraz zależności moich pakietów. W ten sposób nigdy nie zapomnę żadnych zależności w moim setup.py

Jeśli wybierasz MacPorts, pamiętaj, że wiele wersji tego samego pakietu nie jest już wybieranych, tak jak stary styl Debiana z dodatkowym pakietem python_select (nadal jest dostępny dla kompatybilności). Teraz masz polecenie wyboru, aby wybrać, która wersja Pythona będzie używana (możesz nawet wybrać te zainstalowane przez Apple):

$  port select python
Available versions for python:
    none
    python25-apple
    python26-apple
    python27 (active)
    python27-apple
    python32

$ port select python python32

Dodaj do tego toksyny, a Twoje programy powinny być naprawdę przenośne

SystematicFrank
źródło
30

Proszę zobaczyć środowiska programistycznego Python OS X . Najlepszym sposobem jest użycie MacPorts . Pobierz i zainstaluj MacPorts, a następnie zainstaluj Python przez MacPorts, wpisując następujące polecenia w terminalu:

sudo port zainstaluj python26 python_select
sudo port select - ustaw python python26

LUB

sudo port zainstaluj python30 python_select
sudo port select --set python python30

Użyj pierwszego zestawu poleceń, aby zainstalować Python 2.6, a drugiego zestawu, aby zainstalować Python 3.0. Następnie użyj:

port sudo zainstaluj nazwę pakietu py26

LUB

port sudo zainstaluj nazwę pakietu py30

W powyższych poleceń wymienić nazwa_pakietu nazwą opakowania, na przykład:

port sudo zainstaluj py26-setuptools

Te polecenia automatycznie zainstalują pakiet (i jego zależności) dla danej wersji Pythona.

Aby zobaczyć pełną listę dostępnych pakietów dla Pythona, wpisz:

lista portów | grep py26-

LUB

lista portów | grep py30-

To, które polecenie używasz, zależy od wersji Pythona, którą wybrałeś do zainstalowania.

Michael Aaron Safyan
źródło
1
Dla przypomnienia, w ostatnich wersjach MacPorts sudo python_select python30zostało zastąpione przez sudo port select --set python python30.
Benjamin Hodgson
7

Używam MacPorts do instalowania Pythona i wszelkich modułów innych firm śledzonych przez MacPorts /opt/local, a także instaluję ręcznie zainstalowane moduły (te, których nie ma w repozytorium MacPorts) /usr/local, i nigdy nie powodowało to żadnych problemów. Myślę, że możesz być zdezorientowany co do użycia niektórych skryptów MacPorts i zmiennych środowiskowych.

MacPorts python_selectsłuży do wybierania „bieżącej” wersji Pythona, ale nie ma to nic wspólnego z modułami. Pozwala to np. Na zainstalowanie zarówno Pythona 2.5, jak i Pythona 2.6 przy użyciu MacPorts i przełączanie się między instalacjami.

Te $PATHzmienne środowiskowe ma nie wpływać co moduły Pythona są ładowane. $PYTHONPATHjest tym, czego szukasz. $PYTHONPATHpowinien wskazywać na katalogi zawierające moduły Pythona, które chcesz załadować. W moim przypadku moja $PYTHONPATHzmienna zawiera /usr/local/lib/python26/site-packages. Jeśli używasz Pythona MacPorts, konfiguruje on inne odpowiednie katalogi, więc musisz tylko dodać dodatkowe ścieżki do $PYTHONPATH. Ale znowu, $PATHnie jest w ogóle używany, gdy Python szuka zainstalowanych modułów.

$PATH jest używany, aby znaleźć pliki wykonywalne, więc jeśli zainstalować Python DarwinPorts, upewnij się, że /opt/local/binjest w twojej $PATH.

mipadi
źródło
6

Nie ma nic złego w korzystaniu z instalacji MacPorts Python. Jeśli instalujesz moduły Pythona z MacPorts, ale ich nie widzisz, prawdopodobnie oznacza to, że nie wywołujesz pythona MacPorts, na którym zainstalowałeś. W powłoce terminala można używać ścieżek bezwzględnych do wywoływania różnych zainstalowanych Pythonów. Na przykład:

$ /usr/bin/python2.5         # Apple-supplied 2.5 (Leopard)
$ /opt/local/bin/python2.5   # MacPorts 2.5
$ /opt/local/bin/python2.6   # MacPorts 2.6
$ /usr/local/bin/python2.6   # python.org (MacPython) 2.6
$ /usr/local/bin/python3.1   # python.org (MacPython) 3.1

Aby domyślnie uzyskać właściwy Python, należy upewnić się, że powłoka $ PATH jest ustawiona poprawnie, aby zapewnić, że najpierw zostanie znaleziony właściwy plik wykonywalny. Innym rozwiązaniem jest zdefiniowanie aliasów powłoki dla różnych pytonów.

Instalacja python.org (MacPython) jest również w porządku, jak sugerowali inni. easy_install może pomóc, ale ponownie, ponieważ każda instancja języka Python może mieć własne easy_installpolecenie, upewnij się, że wywołujesz odpowiednie easy_install.

Ned Deily
źródło
2
Jeśli używa MacPorts, poprawnym sposobem uczynienia tej wersji Pythona domyślną nie jest zepsucie PATH, ale zainstalowanie „python_select” i umożliwienie mu automatycznej zmiany niezbędnych dowiązań symbolicznych, aby ta wersja Pythona stała się domyślna.
Michael Aaron Safyan
3
python_select zarządza tylko dowiązaniami symbolicznymi Pythona w / opt / local / bin i nie ma gwarancji, że / opt / local / bin pojawi się przed / usr / local / bin lub / usr / bin w $ PATH (chociaż początkowa instalacja MacPorts próbuje Zrób tak). Chodzi o to, że przy wielu dostępnych wersjach używanie samego „pythona” lub nawet „python2.5” jest ogólnie trochę bzdurą: nie wiesz, w którym Pythonie skończysz, chyba że jesteś świadomy $ Pułapki PATH i / lub użyj ścieżek bezwzględnych.
Ned Deily
6

Jeśli używasz Pythona z MacPorts, ma on swoją własną easy_install znajdującą się pod adresem: /opt/local/bin/easy_install-2.6 (to znaczy dla py26). To nie to samo, co po prostu bezpośrednie wywołanie easy_install, nawet jeśli użyłeś python_select do zmiany domyślnego polecenia Pythona.

Tudor
źródło
1
To samo dotyczy pip. W mojej konfiguracji MacPorts uruchamiam pip-2.6 (który znajduje się w / opt / local / bin /), aby zainstalować moduły Pythona, które działają dobrze z pythonem MacPorts. Możesz sudo port install py2.6-pipdostać pip.
zlovelady
4

Czy w ogóle zajrzałeś do easy_install ? Nie zsynchronizuje twoich macportów ani niczego podobnego, ale automatycznie pobierze najnowszy pakiet i wszystkie niezbędne zależności, tj.

easy_install nose

dla pakietu testów jednostkowych nosa lub

easy_install trac

do tracśledzenia błędów.

Nieco więcej informacji znajduje się również na ich stronie EasyInstall .

Mark Rushakoff
źródło
1
easy_install jest w porządku. Pamiętaj tylko, że tak jak możesz mieć zainstalowanych wiele wersji Pythona, łatwo jest zainstalować wiele wersji easy_install, z których każda jest powiązana z inną instalacją / wersją Pythona. Musisz tylko upewnić się, że rozumiesz, do którego z nich się odwołujesz (co (1) może być pomocne).
Ned Deily
2

Gdy instalujesz moduły za pomocą MacPorts, nie przechodzi to do wersji Pythona firmy Apple. Zamiast tego te moduły są instalowane w wybranej wersji Pythona MacPorts.

Możesz zmienić domyślną wersję Pythona, używając portu Mac o nazwie python_select . instrukcje tutaj .

Jest też easy_install . Który użyje Pythona do zainstalowania modułów Pythona.

Jon W
źródło
python_selectjest już przestarzała, zobacz nowsze odpowiedzi.
askewchan
2

Być może masz już pip3preinstalowany, więc po prostu spróbuj!

Shayan Amani
źródło
-1

Używam easy_install z Pythonem firmy Apple i działa to jak urok.

las3rjock
źródło
-1

Bezpośrednio zainstaluj jeden z pakietów fink (Django 1.6 od listopada 2013)

fink install django-py27
fink install django-py33

Lub stwórz sobie virtualenv:

fink install virtualenv-py27
virtualenv django-env
source django-env/bin/activate
pip install django
deactivate # when you are done

Lub użyj fink django oraz innych pakietów zainstalowanych przez pip w virtualenv

fink install django-py27
fink install virtualenv-py27
virtualenv django-env --system-site-packages
source django-env/bin/activate
# django already installed
pip install django-analytical # or anything else you might want
deactivate # back to your normally scheduled programming
Kurt Schwehr
źródło