Jaki jest najbardziej kompatybilny sposób instalacji modułów Pythona na komputerze Mac?

Zaczynam się uczyć Pythona i uwielbiam go. Pracuję głównie na Macu i Linuksie. Znajduję to na Linuksie (głównie Ubuntu 9.04), gdy instaluję moduł Pythona za pomocą apt-get to działa dobrze. Mogę to bez problemu zaimportować.

Na Macu, jestem przyzwyczajony do korzystania z Macports do instalacji wszystkich rzeczy Unixy. Jednak stwierdzam, że większość modułów Pythona, które instaluję, nie jest widziana przez Pythona. Spędziłem trochę czasu bawiąc się ustawieniami ścieżek i używając python_select . Nic tak naprawdę nie zadziałało i w tym momencie nie rozumiem, zamiast tego po prostu grzebam.

Odnoszę wrażenie, że Macports nie jest powszechnie uwielbiany do zarządzania modułami Pythona. Chciałbym zacząć od nowa, używając bardziej "akceptowanego" (jeśli to właściwe słowo) podejścia.

Tak się zastanawiałem, jaka jest metoda, którą programiści Mac python używają do zarządzania swoimi modułami?

Pytania dodatkowe:

Czy używasz Pythona Apple ' a, czy jakiegoś inna wersja? Czy kompilujesz wszystko ze źródła, czy jest jakiś package manger, który działa dobrze (Fink?).

Author: ROMANIA_engineer, 2009-07-31

13 answers

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 go tak:

easy_install django

Easy_install wykorzystuje indeks pakietów Pythona , który jest niesamowitym zasobem dla programistów Pythona. Rozejrzyj się, aby zobaczyć, jakie pakiety są dostępne.

Lepszym rozwiązaniem jest pip , który zyskuje na popularności, ponieważ próbuje naprawić wiele problemy związane z easy_install. Pip używa tego samego repozytorium pakietów Co easy_install, po prostu działa lepiej. Tak 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 rozwijasz w Pythonie w projektach ze sprzecznymi wymaganiami pakietów, virtualenv jest darem niebios. Pozwoli to na posiadanie zupełnie innych wersji 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 Apple ' a da Ci najmniej bólu głowy, ale jeśli potrzebujesz nowszej wersji (Leopard to chyba 2.5.1), wybrałbym macports python 2.6.

 144
Author: sixthgear,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-07-31 19:47:14

Twoje pytanie ma już trzy lata i są pewne szczegóły nie ujęte w innych odpowiedziach:

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

MacPorts jest przenośny tylko w Mac, ale z easy_install lub pip dowiesz się, jak skonfiguruj środowisko na dowolnej platformie (Win / Mac / Linux / Bsd...). Co więcej, zawsze będzie bardziej aktualna i z większą liczbą 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 o wiele lepszy do podnoszenia modułów z dużą ilością binarnych zależności. Nie ma mowy, bym budował swoje powiązania Qt (PySide) z easy_install lub pip. Qt jest ogromny i wymaga dużo kompilacji. Jak tylko Ty jeśli chcesz mieć pakiet Pythona, który potrzebuje biblioteki używanej przez inne programy Pythonowe, staraj się unikać easy_install lub pip

W pewnym momencie okaże się, że w Macportach 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-(version))

, który zbuduje 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 wszystkich brakujących w MacPorts.

Teraz zauważ, że faworyzuję Pipa nad 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. Jeden bardzo przydatna funkcja pip daje Ci listę wszystkich modułów (wraz z ich wersjami), które zainstalowałeś z MacPorts, easy_install i samym pip:

Pip-2.7 freeze

Jeśli już zacząłeś używać easy_install, nie martw się, pip może rozpoznać wszystko zrobione już przez easy_install, a nawet uaktualnić zainstalowane z nim pakiety.

Jeśli jesteś programistą miej oko na virtualenv do kontrolowania różnych konfiguracji i kombinacji modułów wersje. Inne odpowiedzi już o tym wspominają, to, o czym nie wspomniano, to moduł Tox, Narzędzie do testowania, że twój pakiet instaluje się poprawnie z różnymi wersjami Pythona.

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

Jeśli korzystasz z MacPorts, pamiętaj, że wiele wersji tego samego pakiety nie są już wybierane tak jak stary styl Debiana z dodatkowym pakietem python_select (nadal istnieje kompatybilność). Teraz masz polecenie select, aby wybrać, która wersja Pythona będzie używana (możesz nawet wybrać 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 toksykologię, a Twoje programy powinny być naprawdę przenośne

 42
Author: SystematicFrank,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-01-11 20:24:51

Zobacz środowisko programistyczne Python OS X . Najlepszym sposobem jest użycie MacPorts . Pobierz i zainstaluj MacPorts, a następnie zainstaluj Pythona za pomocą MacPorts, wpisując następujące polecenia w Terminalu:

sudo port install python26 python_select
sudo port select --set python python26

Lub

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

Użyj pierwszego zestawu poleceń do zainstalowania Pythona 2.6, A drugiego zestawu do zainstalowania Pythona 3.0. Następnie użyj:

sudo port install py26-packagename

Lub

sudo port install py30-packagename

W powyższych poleceniach zastąp nazwę pakietu nazwą pakietu, dla przykład:

sudo port install py26-setuptools

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

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

port list | grep py26-

Lub

port list | grep py30-

To, którego polecenia użyjesz, zależy od wersji Pythona, którą wybierzesz do zainstalowania.

 30
Author: Michael Aaron Safyan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:47:13

Używam MacPorts do instalacji Pythona i innych modułów śledzonych przez MacPorts do /opt/local, i instaluję wszystkie ręcznie zainstalowane moduły (te, które nie są w repozytorium MacPorts) do /usr/local, i to nigdy nie spowodowało żadnych problemów. Myślę, że możesz być zdezorientowany co do korzystania z 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 i Python 2.6 przy użyciu MacPorts i przełączanie między instalacjami.

Zmienne środowiskowe $PATH nie wpływają na załadowane Moduły Pythona. To jest to, czego szukasz. $PYTHONPATH powinien wskazywać katalogi zawierające moduły Pythona, które chcesz załadować. W moim przypadku moja zmienna $PYTHONPATH zawiera /usr/local/lib/python26/site-packages. Jeśli używasz Pythona MacPorts, ustawia on dla Ciebie inne odpowiednie katalogi, więc musisz tylko dodać dodatkowe ścieżki do $PYTHONPATH. Ale znowu, $PATH nie jest używany w ogóle, gdy Python wyszukuje zainstalowane moduły.

$PATH jest używany do znajdowania plików wykonywalnych, więc jeśli instalujesz Python MacPorts, upewnij się, że /opt/local/bin jest w $PATH.

 7
Author: mipadi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-07-31 18:31:26

Nie ma nic złego w używaniu instalacji Pythona MacPorts. Jeśli instalujesz Moduły Pythona z MacPorts, ale ich nie widzisz, prawdopodobnie oznacza to, że nie wywołujesz zainstalowanego Pythona MacPorts. W powłoce terminala można użyć ścieżek bezwzględnych, aby wywołać różne Pythony, które mogą być zainstalowane. 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 uzyskać właściwy python domyślnie wymaga upewnienia się, że powłoka $PATH jest ustawiona poprawnie, aby upewnić się, że właściwy plik wykonywalny zostanie znaleziony jako pierwszy. Innym rozwiązaniem jest zdefiniowanie aliasów powłoki dla różnych Pythonów.

A python.org (MacPython) instalacja jest również dobra, jak sugerowali inni. easy_install może pomóc, ale ponieważ każda instancja Pythona może mieć własne polecenie easy_install, Upewnij się, że wywołujesz właściwe easy_install.

 6
Author: Ned Deily,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-07-31 18:26:32

Jeśli używasz Pythona z MacPorts, jego własny easy_install znajduje się pod adresem: /opt/local/bin / easy_install-2.6 (dla py26, czyli). To nie to samo, co bezpośrednie wywołanie easy_install, nawet jeśli użyłeś python_select do zmiany domyślnego polecenia Pythona.

 6
Author: Tudor,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-03-04 14:51:18

Przyjrzałeś się w ogóle easy_install ? Nie zsynchronizuje twojego macportsa ani nic podobnego, ale automatycznie pobierze najnowszy pakiet i wszystkie niezbędne zależności, tj.

easy_install nose

Dla zestawu do badania jednostkowego nosa lub

easy_install trac

Dla trac bug tracker.

Jest też trochę więcej informacji na ich stronie EasyInstall.
 4
Author: Mark Rushakoff,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-07-31 17:07:50

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:

which python
 3
Author: Edmundito,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-08-16 00:44:05

Gdy instalujesz moduły z MacPorts, nie wchodzi to do wersji Pythona firmy Apple. Zamiast tego moduły te są instalowane na 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 będzie używał Pythona do instalacji modułów Pythona.

 2
Author: Jon W,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-07-31 17:18:16

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

 2
Author: Shayan Amani,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-17 04:29:48

Jeśli chodzi o wersję Pythona, Mac OS zazwyczaj wysyła starą wersję Pythona. Dobrym pomysłem jest uaktualnienie do nowszej wersji. Możesz pobrać .dmg z http://www.python.org/download /. Jeśli to zrobisz, pamiętaj, aby zaktualizować ścieżkę. Dokładne komendy znajdziesz tutaj http://farmdev.com/thoughts/66/python-3-0-on-mac-os-x-alongside-2-6-2-5-etc-/

 1
Author: Mario F,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-07-31 17:23:02

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

 -1
Author: las3rjock,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-07-31 17:21:32

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

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 plus innych pakietów PIP zainstalowanych 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
 -1
Author: Kurt Schwehr,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-11-06 15:53:01