Domanda

Sto iniziando a imparare il pitone e ad amarlo. Lavoro su un Mac principalmente come su Linux. Lo trovo su Linux (principalmente Ubuntu 9.04) quando installo un modulo Python usando apt-get, funziona bene. Posso importarlo senza problemi.

Sul Mac, sono abituato a usare Macports per installare tutto ciò che riguarda Unixy. Tuttavia, sto scoprendo che la maggior parte dei moduli Python che installo con esso non vengono visti da Python. Ho trascorso un po 'di tempo a giocare con le impostazioni PATH e usando python_select. Niente ha funzionato davvero e a questo punto non capisco davvero, invece sto solo frugando in giro.

Ho l'impressione che Macports non sia universalmente amato per la gestione dei moduli Python. Vorrei ricominciare da capo usando un altro "accettato" (se è la parola giusta) approccio.

Quindi, mi chiedevo, qual è il metodo che gli sviluppatori Mac Python usano per gestire i loro moduli?

Domande bonus:

Usi il pitone di Apple o qualche altra versione? Compili tutto dalla fonte o c'è un gestore di pacchetti che funziona bene (Fink?).

È stato utile?

Soluzione

Il modo più popolare per gestire i pacchetti python (se non si utilizza il gestore pacchetti di sistema) è utilizzare setuptools e easy_install. Probabilmente è già installato sul tuo sistema. Usalo in questo modo:

easy_install django

easy_install utilizza l ' Indice pacchetti Python che è una straordinaria risorsa per gli sviluppatori Python. Dai un'occhiata in giro per vedere quali pacchetti sono disponibili.

Un'opzione migliore è pip , che sta guadagnando trazione, mentre tenta di risolve molti problemi associati a easy_install. Pip utilizza lo stesso repository di pacchetti di easy_install, funziona solo meglio. In realtà l'unica volta che è necessario usare easy_install è per questo comando:

easy_install pip

Successivamente, utilizzare:

pip install django

A un certo punto probabilmente vorrai imparare qualcosa su virtualenv . Se fai molto sviluppo di Python su progetti con requisiti di pacchetto contrastanti, virtualenv è una manna dal cielo. Ti permetterà di avere versioni completamente diverse di vari pacchetti e di passare facilmente da uno all'altro in base alle tue esigenze.

Per quanto riguarda quale pitone usare, attenersi al pitone di Apple ti darà il minimo mal di testa, ma se hai bisogno di una versione più recente (credo che Leopard sia 2.5.1), andrei con macports python 2.6.

Altri suggerimenti

La tua domanda ha già tre anni e ci sono alcuni dettagli non trattati in altre risposte:

La maggior parte delle persone che conosco usano HomeBrew o MacPorts , preferisco MacPorts per il suo taglio netto di quello che è un ambiente Mac OS X predefinito e la mia configurazione di sviluppo. Basta spostare la cartella / opt e testare i pacchetti con un normale ambiente Python utente

MacPorts è portatile solo su Mac, ma con easy_install o pip imparerai come configurare il tuo ambiente su qualsiasi piattaforma (Win / Mac / Linux / Bsd ...). Inoltre sarà sempre più aggiornato e con più pacchetti

Lascio che MacPorts gestisca personalmente i miei moduli Python per mantenere tutto aggiornato. Come qualsiasi altro gestore di pacchetti di alto livello (es. Apt-get) è molto meglio per il sollevamento di moduli pesanti con molte dipendenze binarie. Non è possibile costruire i miei collegamenti Qt (PySide) con easy_install o pip. Qt è enorme e richiede molto tempo per essere compilato. Non appena si desidera un pacchetto Python che necessita di una libreria utilizzata da programmi non Python, provare ad evitare easy_install o pip

Ad un certo punto scoprirai che mancano alcuni pacchetti all'interno di MacPorts. Non credo che MacPorts ti darà mai l'intero CheeseShop . Ad esempio, recentemente ho avuto bisogno del modulo Elixir , ma MacPorts offre solo py25-elixir e py26-elixir, nessuna versione di py27. In casi come questi hai:

  

pip-2.7 install - user elixir

(assicurati di digitare sempre pip- (versione))

Ciò creerà una libreria Python aggiuntiva nella tua home directory. Sì, Python funzionerà con più di una posizione di libreria: una controllata da MacPorts e una locale dell'utente per tutto ciò che manca in MacPorts.

Ora nota che preferisco pip su easy_install. C'è una buona ragione per cui dovresti evitare setuptools e easy_install. Ecco una buona spiegazione e cerco di tenermi alla larga da loro. Una caratteristica molto utile di pip ti dà un elenco di tutti i moduli (insieme alle loro versioni) che hai installato con MacPorts, easy_install e pip stesso:

  

blocco pip-2.7

Se hai già iniziato a utilizzare easy_install, non ti preoccupare, pip può riconoscere tutto ciò che è già stato fatto da easy_install e persino aggiornare i pacchetti installati con esso.

Se sei uno sviluppatore, tieni d'occhio virtualenv per controllare diverse configurazioni e combinazioni di versioni dei moduli. Altre risposte lo menzionano già, ciò che non è stato menzionato finora è il modulo Tox , uno strumento per verificare che il pacchetto venga installato correttamente con diverse versioni di Python.

Anche se di solito non ho conflitti di versione, mi piace avere virtualenv per configurare un ambiente pulito e avere una visione chiara delle dipendenze dei miei pacchetti. In questo modo non dimentico mai le dipendenze nel mio setup.py

Se scegli MacPorts, tieni presente che più versioni dello stesso pacchetto non sono più selezionate come il vecchio stile Debian con un pacchetto python_select aggiuntivo (è ancora lì per compatibilità). Ora hai il comando select per scegliere quale versione di Python verrà utilizzata (puoi anche selezionare quelle installate da Apple):

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

$ port select python python32

Aggiungi tox sopra di esso e i tuoi programmi dovrebbero essere davvero portatili

Vedi Ambiente di sviluppo Python OS X . Il modo migliore è utilizzare MacPorts . Scarica e installa MacPorts, quindi installa Python tramite MacPorts digitando i seguenti comandi nel Terminale:

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

o

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

Usa il primo set di comandi per installare Python 2.6 e il secondo set per installare Python 3.0. Quindi utilizzare:

sudo port install py26-packagename

o

sudo port install py30-packagename

Nei comandi precedenti, sostituire nomepacchetto con il nome del pacchetto, ad esempio:

sudo port install py26-setuptools

Questi comandi installeranno automaticamente il pacchetto (e le sue dipendenze) per la versione di Python fornita.

Per un elenco completo dei pacchetti disponibili per Python, digitare:

port list | grep py26-

o

port list | grep py30-

Quale comando usi dipende dalla versione di Python che hai scelto di installare.

Uso MacPorts per installare Python e tutti i moduli di terze parti monitorati da MacPorts in / opt / local e installo qualsiasi modulo installato manualmente (quelli che non si trovano nel repository MacPorts) in / usr / local e questo non ha mai causato problemi. Penso che potresti essere confuso sull'uso di alcuni script MacPorts e variabili di ambiente.

MacPorts python_select è usato per selezionare " corrente " versione di Python, ma non ha nulla a che fare con i moduli. Ciò consente, ad esempio, di installare sia Python 2.5 che Python 2.6 utilizzando MacPorts e passare da un'installazione all'altra.

Le variabili di ambiente $ PATH non non influenzano i moduli Python caricati. $ PYTHONPATH è quello che stai cercando. $ PYTHONPATH dovrebbe puntare alle directory contenenti i moduli Python che si desidera caricare. Nel mio caso, la mia variabile $ PYTHONPATH contiene / usr / local / lib / python26 / site-pacchetti . Se usi Python di MacPorts, imposta le altre directory appropriate per te, quindi devi solo aggiungere ulteriori percorsi a $ PYTHONPATH . Ma ancora, $ PATH non viene usato affatto quando Python cerca i moduli che hai installato.

$ PATH è usato per trovare eseguibili, quindi se installi Python di MacPorts, assicurati che / opt / local / bin sia in il tuo $ PATH .

Non c'è niente di sbagliato nell'utilizzo di un'installazione di MacPorts Python. Se stai installando moduli Python da MacPorts ma non li vedi, ciò probabilmente significa che non stai invocando il Python MacPorts che hai installato. In una shell terminale, è possibile utilizzare percorsi assoluti per richiamare i vari Python che possono essere installati. Ad esempio:

$ /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

Per ottenere il pitone giusto per impostazione predefinita, è necessario assicurarsi che la shell $ PATH sia impostata correttamente per garantire che venga trovato prima l'eseguibile giusto. Un'altra soluzione è definire gli alias di shell per i vari pitoni.

Anche un'installazione di python.org (MacPython) va bene, come altri hanno suggerito. easy_install può aiutare ma, ancora una volta, poiché ogni istanza di Python può avere il proprio comando easy_install , assicurati di invocare il easy_install giusto.

Se usi Python da MacPorts, ha la sua easy_install situata in: /opt/local/bin/easy_install-2.6 (per py26, cioè). Non è lo stesso che chiamare semplicemente easy_install direttamente, anche se hai usato python_select per modificare il comando python predefinito.

Hai mai esaminato easy_install ? Non sincronizzerà i tuoi macport o qualcosa del genere, ma scaricherà automaticamente l'ultimo pacchetto e tutte le dipendenze necessarie, ad esempio

easy_install nose

per il pacchetto di test dell'unità naso o

easy_install trac

per il bug tracker trac .

Ci sono un po 'più di informazioni sulla loro EasyInstall .

Per le installazioni di MacPython, ho trovato una soluzione efficace per risolvere il problema con setuptools (easy_install) in questo post del blog:

http://droidism.com/getting -running-con-django-e-MacPython-26-on-leopardo

Un utile suggerimento include scoprire quale versione di Python è attiva nel terminale:

which python

Quando installi moduli con MacPorts, non va nella versione Apple di Python. Invece quei moduli sono installati sulla versione MacPorts di Python selezionata.

Puoi cambiare quale versione di Python è usata di default usando una porta mac chiamata python_select . istruzioni qui .

Inoltre, c'è easy_install . Che utilizzerà Python per installare i moduli Python.

Potresti già avere pip3 preinstallato, quindi provalo!

Per quanto riguarda quale versione di Python usare, Mac OS di solito spedisce una vecchia versione di Python. È una buona idea passare a una versione più recente. Puoi scaricare un .dmg da http://www.python.org/download/ . Se lo fai, ricordati di aggiornare il percorso. Puoi trovare i comandi esatti qui http://farmdev.com/thoughts/66/python-3-0-on-mac-os-x-alongside-2-6-2-5-etc-/

Uso easy_install con Apple Python e funziona come un fascino.

Installa direttamente uno dei pacchetti fink (Django 1.6 a partire da 2013-Nov)

fink install django-py27
fink install django-py33

O creati un virtualenv:

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

Oppure usa fink django e altri pacchetti pip installati in virtualen

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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top