lokalizacja Pythona w systemie Mac OSX


96

Jestem trochę zdezorientowany z Pythonem na OSX. Nie wiem, czy poprzedni właściciel laptopa zainstalował macpythona za pomocą macport. Przypomniałem sobie, że osx ma wbudowaną wersję Pythona. Próbowałem użyć type -a pythoni wynik powrócił

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

Jednak uruchamianie obu Pythona w tych lokalizacjach daje mi [GCC 4.2.1 (Apple Inc. build 5646)] on darwin. Czy oba odnoszą się do tego samego wbudowanego mac Pythona?

Czytałem też, że można by zainstalować macpythona

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

Spojrzałem Applicationsi tam jest MacPortfolder z python2.6wymienionymi rzeczami. Ale uruchamiając IDLE, widzę tę samą wiadomość co powyżej.

Hmm, jestem trochę zdezorientowany. Który jest który?

Odpowiedzi:


63

[GCC 4.2.1 (Apple Inc. build 5646)]jest wersją GCC, z którą zostały zbudowane Pythony, a nie wersją samego Pythona. Ta informacja powinna znajdować się w poprzednim wierszu. Na przykład:

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

Elementy w programie /usr/binpowinny zawsze znajdować się lub zawierać łącza do plików dostarczonych przez firmę Apple w systemie OS X, chyba że ktoś nieumyślnie wprowadził tam zmiany. Aby zobaczyć dokładnie, do /usr/local/bin/pythonkogo prowadzi link:

$ 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

W tym przypadku jest to typowe dla instancji Pythona zainstalowanej na python.org lub może to być instancja zbudowana ze źródeł.


55

Znalazłem najłatwiejszy sposób na zlokalizowanie go, możesz użyć

which python

pokaże coś takiego:

/usr/bin/python


3
To nie wyjaśnia, która dystrybucja Pythona (kto ją stworzył).
Scott Prive

53

W systemie Mac OS X jest w środowisku Pythona w /System/Library/Frameworks/Python.framework/Resources.

Pełna ścieżka to:

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

Przy okazji łatwo jest dowiedzieć się, gdzie można znaleźć konkretny plik binarny: which Pythonpokaże ci ścieżkę do twojego pliku binarnego Pythona (który jest prawdopodobnie taki sam, jak napisałem powyżej).


tak, wiedziałem o tym. Po prostu jestem zdezorientowany - uruchomiłem interpreter na / usr / local / bin / i wypisałem sys.executable. Mówi / usr / bin / python. ale czytam dokumentację i jest tam napisane, że dostarczony przez Apple plik znajdował się w / usr / bin /, a „dowiązanie symboliczne do pliku wykonywalnego Pythona jest umieszczone w / usr / local / bin /”.
goh,

Cóż, ma to sens: kiedy samodzielnie kompilujesz plik wykonywalny Pythona i przenosisz go do, powiedzmy / Users / John / Downloads /, pokaże ci, że jest umieszczony w / Users / John / Downloads / python. Możesz uruchomić wiele plików wykonywalnych obok siebie w tym samym systemie. AFAIK ten w Python.framework jest jednak podstawowym, więc powinieneś na nim polegać.
elslooo

28
W rzeczywistości dostarczane przez Apple Pythony w systemie Mac OS X są dostępne /System/Library/Frameworks/Python.framework. Wszystko, co /Library/Frameworks/Python.frameworkzawiera, pochodzi z instalacji innej firmy, zwykle instalatora python.org (lub innego dystrybutora) lub jeśli zrobiłeś domyślną kompilację Pythona ze źródła.
Ned Deily,

1
Kiedy uruchamiam /System/Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7dane ps auxwyjściowe, pokazuje mi /System/Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python, dlaczego - nie widzę, że to jest dowiązanie symboliczne? ( Zadano to pytanie w AskDifferent )
Zitrax

@Tim Thanks. Kiedy przechodzę do /Library/Frameworks/Python.framework/Versions/, nie widzę wersji 2.7 (którą zainstalowałem), ale plik aliasu o nazwie „Current”, który po kliknięciu powoduje wyświetlenie błędu „Operacja nie można wziąć udziału w konkursie, ponieważ nie można znaleźć oryginalnego przedmiotu dla „Bieżącego”. "
Pyderman

44

Ten rozwiąże wszystkie problemy dotyczące Pythona i Maca:

Jeśli masz Maca i zainstalowałeś python3 jak większość z nas :) (z brew install - ofc)

twój plik znajduje się w:

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

Skąd wiesz? Biegać:

which python3

Powinieneś wziąć:

/usr/local/bin/python3

To jest dowiązanie symboliczne, skąd wiesz? Biegać:

ls -al /usr/local/bin/python3 

a otrzymasz:

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

co oznacza, że ​​twój

/usr/local/bin/python3 

faktycznie wskazuje na:

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

Jeśli z jakiegoś powodu twój

/usr/local/bin/python3 

nie wskazuje żądanego miejsca, które w naszym przypadku:

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

po prostu wykonaj kopię zapasową:

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

i biegnij:

rm -rf /usr/local/bin/python3

teraz utwórz nowe dowiązanie symboliczne:

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

a teraz twój

/usr/local/bin/python3

wskazuje

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

Sprawdź to uruchamiając:

ls -al /usr/local/bin/python3

1
wreszcie .... dziękuję !!!!! napotkałem ten problem w środowisku wirtualnym. Rozwiązania również działają. wystarczy użyć poprawnej lokalizacji Pythona
Paul Jurczyk

6

Na High Sierra

which python

pokazuje domyślny python, ale jeśli pobrałeś i zainstalowałeś najnowszą wersję z python.org, możesz ją znaleźć przez:

which python3.6

który na moim komputerze pokazuje

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

To nie wyjaśnia, która dystrybucja Pythona (kto ją stworzył).
Scott Prive


3

Sprawdziłem kilka podobnych dyskusji i znalazłem najlepszy sposób na zlokalizowanie wszystkich kompilacji python2 / python3:

which -a python python3


1

which python3 po prostu prowadzi do ścieżki, na której tłumacz ustala.


0

Uruchom to w swoim interaktywnym terminalu

import os
os.path

Daje ci folder, w którym jest zainstalowany Python


0

uruchom następujący kod w pliku .py:

import sys

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

-1

Mam przepis kucharza na znajdowanie rzeczy w Linuksie / MacOS

Najpierw zaktualizuj lokalizację bazy danych, a następnie wykonaj

locate WHATiWANTtoSEARCH | less

zrób / znajdź, aby znaleźć to, czego szukasz.

aby zaktualizować swoją lokalizację bazy danych w macOS, wykonaj następujące czynności:

sudo /usr/libexec/locate.updatedb

czasami zajmuje to trochę czasu. Mam nadzieję że to pomoże :)

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.