osx: impostazione di python predefinito per i file nel terminal?

Come posso impostare il python predefinito per l'esecuzione di file py senza la parola chiave "python" cioe ' $ django-admin.py manage.py startproject" in bash shell?

Questo dipende dalla prima row del file .py (la "linea shebang"). Di solito vednetworking qualcosa di simile:

 #!/usr/bin/python2.6 

In questo caso, lo script che viene eseguito come eseguibile autonomo verrà eseguito utilizzando la versione di Python in /usr/bin/python2.6. Perché questa versione del pitone? Potrebbe essere stato codificato duro nello script, ma più probabilmente è stato impostato automaticamente quando è stato installato lo script. Ad esempio quando hai installato Django:

  1. Scaricato la sorgente e ha eseguito python setup.py – nel qual caso lo script viene installato per eseguire con la versione di python eseguito setup.py utilizzando
  2. Ran easy_install django – nel qual caso lo script viene installato per eseguire con la stessa versione di python che utilizza easy_install (anche uno script Python). (Questo è il motivo per cui vedrai spesso più versioni di easy_install elencate, ad esempio, sono disponibili easy_install-2.5, easy_install-2.6 e easy-install-2.7. Quando faccio appena digitare easy_install utilizza easy_install-2.6.)
  3. Ran pip install django – stesso affare come con easy_install, praticamente.

Per eseguire lo script con un'altra versione di Python è ansible modificare la linea shebang (ad esempio per leggere #!/usr/bin/python2.7 ) oppure specificare il tuo pitone sulla row di command (ad esempio /path/to/python2.7 /path/to/django-admin.py args ). Si noti comunque che gli script come django-admin.py sono solo un front-end ad un più ampio insieme di librerie (in questo caso Django) e quelle librerie saranno installate per impostazione predefinita nella posizione della libreria per una specifica versione di Python . Ad esempio, se la prima row di django-admin.py indica che è in esecuzione sotto Python 2.6, le librerie di Django saranno installate in una directory di libreria specifica Python 2.6 e non saranno disponibili per impostazione predefinita ad esempio Python 2.7 .

In altri casi vedrai una linea come questo:

 #!/usr/bin/env python 

In questo caso, lo script verrà eseguito con qualsiasi versione di Python che si ottiene quando si digita il python alla row di command. Sarai in grado di modificare la versione di python che gli script con questo tipo di linea di shebang hanno, ad esempio, alterando la variabile di ambiente PATH in modo che la shell scopri il pitone in una directory diversa.

In entrambi i casi, si dovrebbe considerare il controllo di virtualenvwrapper , un'estensione a virtualenv . Consente di impostare in modo rapido e semplice ambienti virtuali multipli per progetti Python, ognuno con la propria versione predefinita di Python e le librerie.

Aggiornamento : poiché la tua domanda menziona OS X, vale la pena ricordare che in OS X, / usr / bin / python esegue una versione configurabile da Python dell'utente. Vedere la manpage di python di OS X per i dettagli.

trovare la versione lunga qui:

in breve:

 defaults write com.apple.versioner.python Version xx /usr/bin/python -V -> Python xxy 

per un rapido spostamento nell'esecuzione della session CLI

 export VERSIONER_PYTHON_VERSION=2.5 /usr/bin/python -V -> Python 2.5.6 

torna al standard python predefinito

 unset VERSIONER_PYTHON_VERSION