posizione di python su mac osx


94

Sono un po 'confuso con il python su osx. Non so se il precedente proprietario del laptop abbia installato macpython utilizzando macport. E mi sono ricordato che osx ha una versione incorporata di python. Ho provato a utilizzare type -a pythone il risultato è tornato

python is /usr/bin/python
python is /usr/local/bin/python

Tuttavia, l'esecuzione di entrambi i python in queste posizioni mi dà [GCC 4.2.1 (Apple Inc. build 5646)] on darwin. Si riferiscono entrambi allo stesso Mac Python integrato fornito?

Ho anche letto che l'installazione di macpython sarebbe

     A MacPython 2.5 folder in your Applications folder. In here you
 find IDLE, the development environment that is a standard part of
 official Python distributions...

Ho guardato Applicationse c'è una MacPortcartella con python2.6e le cose menzionate in essa. Ma eseguendo IDLE, trovo lo stesso messaggio di cui sopra.

Hmm sono un po 'confuso. Quale è quale?

Risposte:


63

[GCC 4.2.1 (Apple Inc. build 5646)]è la versione di GCC con cui sono stati costruiti i Python, non la versione di Python stesso. Quelle informazioni dovrebbero essere sulla riga precedente. Per esempio:

# Apple-supplied Python 2.6 in OS X 10.6
$ /usr/bin/python
Python 2.6.1 (r261:67515, Jun 24 2010, 21:47:49) 
[GCC 4.2.1 (Apple Inc. build 5646)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 

# python.org Python 2.7.2 (also built with newer gcc)
$ /usr/local/bin/python
Python 2.7.2 (v2.7.2:8527427914a2, Jun 11 2011, 15:22:34) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>

Gli elementi /usr/bindovrebbero sempre essere o collegarsi a file forniti da Apple in OS X, a meno che qualcuno non abbia sconsideratamente cambiato le cose lì. Per vedere esattamente dove /usr/local/bin/pythonè collegato a:

$ ls -l /usr/local/bin/python
lrwxr-xr-x  1 root  wheel  68 Jul  5 10:05 /usr/local/bin/python@ -> ../../../Library/Frameworks/Python.framework/Versions/2.7/bin/python

In questo caso, ciò è tipico per un'istanza Python installata su python.org o potrebbe essere una compilata dal sorgente.


53

Su Mac OS X, è nel framework Python in /System/Library/Frameworks/Python.framework/Resources.

Il percorso completo è:

/System/Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python

Comunque è facile scoprire dove puoi trovare un binario specifico: which Pythonti mostrerà il percorso del tuo binario Python (che è probabilmente lo stesso che ho postato sopra).


sì lo sapevo. È solo che sono confuso: ho eseguito l'interprete su / usr / local / bin / e ho stampato sys.executable. Dice / usr / bin / python. ma ho letto la documentazione e si dice che la mela fornita era in / usr / bin / e "Un collegamento simbolico all'eseguibile Python è posto in / usr / local / bin /" di macpython.
goh

Bene, ha senso: quando compili tu stesso l'eseguibile python e lo sposti, ad esempio / Users / John / Downloads /, ti mostrerà che si trova in / Users / John / Downloads / python. È possibile eseguire più eseguibili uno accanto all'altro sullo stesso sistema. Per quanto ne so, quello in Python.framework è quello principale, quindi dovresti fare affidamento su quello.
elslooo

28
In realtà, i Pythons forniti da Apple in Mac OS X sono in formato /System/Library/Frameworks/Python.framework. Qualsiasi cosa /Library/Frameworks/Python.frameworkproviene da un'installazione di terze parti, di solito un programma di installazione di python.org (o altro distributore) o se hai creato un framework predefinito di Python dal sorgente.
Ned Deily

1
Quando eseguo /System/Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7l' ps auxoutput mi mostra /System/Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python, perché - non vedo che è un collegamento simbolico? (Ha fatto questa domanda a AskDifferent )
Zitrax

@Tim Thanks. Quando vado su /Library/Frameworks/Python.framework/Versions/, non vedo 2.7 (che è quello che ho installato), ma un file alias chiamato 'Current', che, se cliccato, mi dà l'errore "L'operazione non è possibile competere perché l'elemento originale per "Corrente" non è stato trovato. "
Pyderman

53

Ho trovato il modo più semplice per individuarlo, puoi usare

which python

mostrerà qualcosa del genere:

/usr/bin/python


3
Questo non risponde a quale distribuzione di Python (chi l'ha creata).
Scott Prive

42

Questo risolverà tutti i tuoi problemi con Python e Mac:

Se hai un Mac e hai installato python3 come fa la maggior parte di noi :) (con brew install - ofc)

il tuo file si trova in:

/usr/local/Cellar/python/3.6.4_4/bin/python3

Come lo sai? Correre:

which python3

Dovresti ricevere:

/usr/local/bin/python3

Ora questo è un collegamento simbolico, come fai a saperlo? Correre:

ls -al /usr/local/bin/python3 

e otterrai:

/usr/local/bin/python3 -> /usr/local/Cellar/python/3.6.4_4/bin/python3

il che significa che il tuo

/usr/local/bin/python3 

in realtà punta a:

/usr/local/Cellar/python/3.6.4_4/bin/python3

Se, per qualche motivo, il tuo file

/usr/local/bin/python3 

non sta indicando il luogo che desideri, che nel nostro caso:

/usr/local/Cellar/python/3.6.4_4/bin/python3

basta eseguire il backup:

cp /usr/local/bin/python3{,.orig} 

e corri:

rm -rf /usr/local/bin/python3

ora crea un nuovo collegamento simbolico:

ln -s /usr/local/Cellar/python/3.6.4_4/bin/python3 /usr/local/bin/python3 

e ora il tuo

/usr/local/bin/python3

punta a

/usr/local/Cellar/python/3.6.4_4/bin/python3 

Controllalo eseguendo:

ls -al /usr/local/bin/python3

1
finalmente .... grazie !!!!! stavo riscontrando questo problema in un ambiente virtuale. Anche le soluzioni funzionano. ho solo bisogno di usare la posizione corretta del pitone
Paul Jurczyk il

6

Su High Sierra

which python

mostra il python predefinito ma se hai scaricato e installato l'ultima versione da python.org puoi trovarlo da:

which python3.6

che sulla mia macchina mostra

/Library/Frameworks/Python.framework/Versions/3.6/bin/python3.6

Questo non risponde a quale distribuzione di Python (chi l'ha creata).
Scott Prive


3

Ho controllato alcune discussioni simili e ho scoperto che il modo migliore per individuare tutte le build di python2 / python3 è:

which -a python python3

2

l'ho trovato qui: /Library/Frameworks/Python.framework/Versions/3.6/bin


1

which python3 si traduce semplicemente in un percorso in cui l'interprete si stabilisce.


0

Eseguilo nel tuo terminale interattivo

import os
os.path

Ti darà la cartella in cui è installato python


0

eseguire il codice seguente in un file .py:

import sys

print(sys.version)
print(sys.executable)

-1

Ho una ricetta per cucinare per trovare cose in linux / macos

Prima aggiorna il database di localizzazione, quindi esegui un file

locate WHATiWANTtoSEARCH | less

fai un / find per trovare quello che stai cercando.

per aggiornare il tuo database di localizzazione in macos fai questo:

sudo /usr/libexec/locate.updatedb

a volte ci vuole un po 'di tempo. Spero che questo ti aiuti :)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.