Python-Speicherort auf Mac OSX

94

Ich bin ein wenig verwirrt mit der Python auf Osx. Ich weiß nicht, ob der Vorbesitzer des Laptops Macpython mit Macport installiert hat. Und ich erinnerte mich, dass osx eine eingebaute Version von Python hat. Ich habe es versucht type -a pythonund das Ergebnis wurde zurückgegeben

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

Jedoch geben mir beide Python an diesen Orten laufen [GCC 4.2.1 (Apple Inc. build 5646)] on darwin. Beziehen sich beide auf denselben eingebauten Python-Mac?

Ich habe auch gelesen, dass man Macpython installieren würde

     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...

Ich schaute Applications, und es gibt einen MacPortOrdner mit python2.6und das erwähnte Zeug darin. Aber wenn ich IDLE laufen lasse, finde ich die gleiche Nachricht wie oben.

Hmm ich bin ein bisschen verwirrt. Welcher ist welcher?

goh
quelle

Antworten:

63

[GCC 4.2.1 (Apple Inc. build 5646)]ist die Version von GCC, mit der die Python (s) erstellt wurden, nicht die Version von Python selbst. Diese Informationen sollten in der vorherigen Zeile stehen. Beispielsweise:

# 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.
>>>

Elemente in /usr/binsollten immer Dateien sein oder mit Dateien verknüpft sein, die von Apple in OS X bereitgestellt wurden, es sei denn, jemand hat dort schlecht beratene Änderungen vorgenommen. Um genau zu sehen, wo das /usr/local/bin/pythonverknüpft ist:

$ 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 diesem Fall ist dies typisch für eine auf python.org installierte Python-Instanz oder eine aus dem Quellcode erstellte.

Ned Deily
quelle
53

Unter Mac OS X befindet es sich im Python-Framework in /System/Library/Frameworks/Python.framework/Resources.

Der vollständige Pfad ist:

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

Übrigens ist es einfach herauszufinden, wo Sie eine bestimmte Binärdatei finden können: which PythonZeigt Ihnen den Pfad Ihrer Python-Binärdatei an (der wahrscheinlich derselbe ist, den ich oben gepostet habe).

elslooo
quelle
Ja, das wusste ich. Es ist nur so, dass ich verwirrt bin - ich habe den Interpreter auf / usr / local / bin / ausgeführt und sys.executable gedruckt. Es heißt / usr / bin / python. Aber ich habe die Dokumente gelesen und es heißt, dass der von Apple bereitgestellte in / usr / bin / war und der Macpython "Ein Symlink zur ausführbaren Python-Datei befindet sich in / usr / local / bin /".
Goh
Nun, es macht Sinn: Wenn Sie die ausführbare Python-Datei selbst kompilieren und nach / Users / John / Downloads / verschieben, wird angezeigt, dass sie sich unter / Users / John / Downloads / python befindet. Sie können mehrere ausführbare Dateien nebeneinander auf demselben System ausführen. AFAIK in Python.framework ist jedoch das primäre, daher sollten Sie sich auf dieses verlassen.
Elslooo
28
Tatsächlich sind die von Apple bereitgestellten Pythons in Mac OS X in /System/Library/Frameworks/Python.framework. Alles, was /Library/Frameworks/Python.frameworkhereinkommt, stammt von einer Installation eines Drittanbieters, normalerweise von einem Installationsprogramm von python.org (oder einem anderen Distributor) oder wenn Sie ein Standard-Framework-Build von Python aus dem Quellcode erstellt haben.
Ned Deily
1
Wenn ich /System/Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7die ps auxAusgabe starte /System/Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python, zeigt sie mir , warum ist das so - ich sehe nicht, dass es ein Symlink ist? (Diese Frage wurde bei AskDifferent gestellt )
Zitrax
@ Tim Danke. Wenn ich zu /Library/Frameworks/Python.framework/Versions/ gehe, sehe ich nicht 2.7 (was ich installiert habe), sondern eine Alias-Datei namens 'Current', die beim Klicken den Fehler "The operation" anzeigt kann nicht angetreten werden, da der ursprüngliche Gegenstand für 'Aktuell' nicht gefunden werden kann. "
Pyderman
53

Ich habe den einfachsten Weg gefunden, ihn zu finden

which python

es wird ungefähr so ​​etwas zeigen:

/usr/bin/python

Gavin
quelle
3
Dies beantwortet nicht die Verteilung von Python (wer hat es gemacht).
Scott Prive
42

Dieser wird alle Ihre Probleme lösen, die mit Python und Mac zu tun haben:

Wenn Sie einen Mac haben und Python3 installiert haben, wie es die meisten von uns tun :) (mit Brew Install - ofc)

Ihre Datei befindet sich in:

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

Woher weißt du das? Lauf:

which python3

Du solltest bekommen:

/usr/local/bin/python3

Dies ist eine symbolische Verbindung. Woher wissen Sie das? Lauf:

ls -al /usr/local/bin/python3 

und du wirst bekommen:

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

was bedeutet, dass Ihre

/usr/local/bin/python3 

zeigt tatsächlich auf:

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

Wenn aus irgendeinem Grund Ihre

/usr/local/bin/python3 

zeigt nicht auf den gewünschten Ort, was in unserem Fall:

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

Sichern Sie es einfach:

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

und Renn:

rm -rf /usr/local/bin/python3

Erstellen Sie jetzt einen neuen symbolischen Link:

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

und jetzt dein

/usr/local/bin/python3

zeigt auf

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

Probieren Sie es aus, indem Sie Folgendes ausführen:

ls -al /usr/local/bin/python3
Kohn1001
quelle
1
endlich .... danke !!!!! Ich bin in einer virtuellen Umgebung auf dieses Problem gestoßen. Lösungen funktionieren auch. Ich muss nur den richtigen Python-Speicherort verwenden
Paul Jurczyk
6

Auf der High Sierra

which python

Zeigt die Standard-Python an. Wenn Sie jedoch die neueste Version von python.org heruntergeladen und installiert haben, finden Sie sie unter:

which python3.6

was auf meiner Maschine zeigt

/Library/Frameworks/Python.framework/Versions/3.6/bin/python3.6
Daniel Nuriyev
quelle
Dies beantwortet nicht die Verteilung von Python (wer hat es gemacht).
Scott Prive
5

installiert mit 'Brew Install Python3', fand es hier Geben Sie hier die Bildbeschreibung ein

Georgy Gobozov
quelle
3

Ich habe einige ähnliche Diskussionen überprüft und herausgefunden, wie ich alle Python2 / Python3-Builds am besten finden kann:

which -a python python3
Yongzhi.C
quelle
2

Ich habe es hier gefunden: /Library/Frameworks/Python.framework/Versions/3.6/bin

Glücklich
quelle
1

which python3 führen Sie einfach zu einem Pfad, auf dem sich der Dolmetscher niederlässt.

snr
quelle
0

Führen Sie dies in Ihrem interaktiven Terminal aus

import os
os.path

Sie erhalten den Ordner, in dem Python installiert ist

MaPY
quelle
0

Führen Sie den folgenden Code in einer .py-Datei aus:

import sys

print(sys.version)
print(sys.executable)
hanumanDev
quelle
-1

Ich habe ein Kochrezept, um Dinge in Linux / Macos zu finden

Aktualisieren Sie zuerst die Suchdatenbank und führen Sie dann a aus

locate WHATiWANTtoSEARCH | less

mache ein / find, um zu finden, wonach du suchst.

Gehen Sie folgendermaßen vor, um Ihre Lokalisierungsdatenbank in Macos zu aktualisieren:

sudo /usr/libexec/locate.updatedb

es dauert manchmal eine Weile. Hoffe das hilft :)

Hassek
quelle