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?).
Odpowiedzi:
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 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:
Następnie użyj:
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.
źródło
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:
(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:
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):
Dodaj do tego toksyny, a Twoje programy powinny być naprawdę przenośne
źródło
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:
LUB
Użyj pierwszego zestawu poleceń, aby zainstalować Python 2.6, a drugiego zestawu, aby zainstalować Python 3.0. Następnie użyj:
LUB
W powyższych poleceń wymienić nazwa_pakietu nazwą opakowania, na przykład:
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:
LUB
To, które polecenie używasz, zależy od wersji Pythona, którą wybrałeś do zainstalowania.
źródło
sudo python_select python30
zostało zastąpione przezsudo port select --set python python30
.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_select
sł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
$PATH
zmienne środowiskowe ma nie wpływać co moduły Pythona są ładowane.$PYTHONPATH
jest tym, czego szukasz.$PYTHONPATH
powinien wskazywać na katalogi zawierające moduły Pythona, które chcesz załadować. W moim przypadku moja$PYTHONPATH
zmienna 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,$PATH
nie 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/bin
jest w twojej$PATH
.źródło
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:
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łasneeasy_install
polecenie, upewnij się, że wywołujesz odpowiednieeasy_install
.źródło
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.
źródło
sudo port install py2.6-pip
dostać pip.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.
dla pakietu testów jednostkowych nosa lub
do
trac
śledzenia błędów.Nieco więcej informacji znajduje się również na ich stronie EasyInstall .
źródło
W przypadku instalacji MacPython znalazłem skuteczne rozwiązanie problemu z setuptools (easy_install) w tym poście na blogu:
http://droidism.com/getting-running-with-django-and-macpython-26-on-leopard
Jedna przydatna wskazówka obejmuje sprawdzenie, która wersja Pythona jest aktywna w terminalu:
źródło
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.
źródło
python_select
jest już przestarzała, zobacz nowsze odpowiedzi.Być może masz już
pip3
preinstalowany, więc po prostu spróbuj!źródło
Jeśli chodzi o wersję Pythona, której należy użyć, Mac OS zwykle dostarcza starą wersję Pythona. Warto dokonać aktualizacji do nowszej wersji. Możesz pobrać plik .dmg ze strony http://www.python.org/download/ . Jeśli to zrobisz, pamiętaj o aktualizacji ścieżki. Dokładne polecenia można znaleźć tutaj http://farmdev.com/hardts/66/python-3-0-on-mac-os-x-alongside-2-6-2-5-etc-/
źródło
Używam easy_install z Pythonem firmy Apple i działa to jak urok.
źródło
Bezpośrednio zainstaluj jeden z pakietów fink (Django 1.6 od listopada 2013)
Lub stwórz sobie virtualenv:
Lub użyj fink django oraz innych pakietów zainstalowanych przez pip w virtualenv
źródło