розташування python на mac osx


94

Я трохи плутаюся з python на osx. Я не знаю, чи попередній власник ноутбука встановив macpython за допомогою macport. І я згадав, що osx має вбудовану версію python. Я спробував використати, type -a pythonі результат повернувся

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

Однак запуск обох python у цих місцях дає мені [GCC 4.2.1 (Apple Inc. build 5646)] on darwin. Чи посилаються вони обидва на один і той же вбудований python mac?

Я також читав, що встановлення macpython би було

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

Я подивився Applications, і там є MacPortпапка із python2.6згаданими речами в ній. Але запустивши IDLE, я знаходжу те саме повідомлення, що і вище.

Хм, я трохи розгублений. Що є що?

Відповіді:


63

[GCC 4.2.1 (Apple Inc. build 5646)]- це версія GCC, на якій були побудовані Python (и), а не версія самого Python. Ця інформація повинна бути в попередньому рядку. Наприклад:

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

Елементи /usr/binзавжди повинні бути або посилатися на файли, що постачаються компанією Apple в OS X, за винятком випадків, коли хтось там необдумано міняв речі. Щоб точно побачити, куди /usr/local/bin/pythonзв’язано:

$ 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

У цьому випадку це характерно для встановленого на python.org екземпляра Python, або він може бути побудований із джерела.


54

Я знайшов найпростіший спосіб знайти його, яким ви можете скористатися

which python

він покаже приблизно таке:

/usr/bin/python


3
Це не відповідає, який дистрибутив Python (хто його зробив).
Scott Prive

53

На Mac OS X це в рамках Python в /System/Library/Frameworks/Python.framework/Resources.

Повний шлях:

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

До речі, легко дізнатись, де можна знайти конкретний двійковий файл: which Pythonпокаже шлях до вашого двійкового файлу Python (який, мабуть, такий самий, як я писав вище).


так, я це знав. Це просто, що я заплутався - я запустив перекладач на / usr / local / bin / і надрукував sys.executable. Там написано / usr / bin / python. але я прочитав документи, і там написано, що яблуко було в / usr / bin /, а macpython "Символьне посилання на виконуваний файл Python розміщено в / usr / local / bin /".
goh

Ну, це має сенс: коли ви самі скомпілюєте виконуваний файл python і перемістите його, скажімо / Users / John / Downloads /, він покаже вам, що його розміщено в / Users / John / Downloads / python. Ви можете запускати кілька виконуваних файлів поруч один з одним в одній системі. AFAIK той, що є в Python.framework, є основним, однак вам слід покладатися на нього.
elslooo

28
Насправді, постачається Apple, Pythons в Mac OS X є /System/Library/Frameworks/Python.framework. Все, що /Library/Frameworks/Python.frameworkвходить, походить від сторонньої інсталяції, як правило, від програми встановлення python.org (або іншого розповсюджувача), або якщо ви виконували збірку Python за замовчуванням з джерела.
Ned Deily

1
Коли я біг /System/Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7на ps auxвиході показує мені /System/Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python, чому це - я не бачу , що це символічне? ( Задано це запитання на AskDifferent )
Zitrax,

@Tim Дякую. Коли я заходжу в /Library/Frameworks/Python.framework/Versions/, я бачу не 2.7 (це те, що я встановив), а файл псевдоніма під назвою 'Current', який при натисканні видає мені помилку "Операція не можна конкурувати, оскільки оригінальний елемент для "Поточний" не може бути знайдений ".
Підерман

42

Це вирішить усі ваші проблеми, пов'язані з Python та Mac:

Якщо у вас Mac і ви встановили python3, як це робить більшість із нас :) (з brew install - ofc)

ваш файл знаходиться в:

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

Звідки ти знаєш? Виконати:

which python3

Ви повинні отримати:

/usr/local/bin/python3

Тепер це символічне посилання, звідки ви знаєте? Виконати:

ls -al /usr/local/bin/python3 

і ви отримаєте:

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

що означає, що ваш

/usr/local/bin/python3 

насправді вказує на:

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

Якщо з якихось причин ваш

/usr/local/bin/python3 

не вказує на потрібне вам місце, яке в нашому випадку:

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

просто зробіть резервну копію:

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

і запустіть:

rm -rf /usr/local/bin/python3

тепер створіть нове символічне посилання:

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

а тепер ваш

/usr/local/bin/python3

вказує на

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

Перевірте це, запустивши:

ls -al /usr/local/bin/python3

1
нарешті .... дякую !!!!! я стикався з цією проблемою у віртуальному середовищі. Рішення також працюють. просто потрібно використовувати правильне розташування пітона
Пол Юрчик

6

На Високій Сьєррі

which python

показує python за замовчуванням, але якщо ви завантажили та встановили останню версію з python.org, ви можете знайти його за допомогою:

which python3.6

що на моїй машині показано

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

Це не відповідає, який дистрибутив Python (хто його зробив).
Scott Prive


3

Я перевірив кілька подібних обговорень і з'ясував, що найкращим способом знайти всі побудови python2 / python3 є:

which -a python python3


1

which python3 просто привести до шляху, в якому перекладач оселиться.


0

Запустіть це у своєму інтерактивному терміналі

import os
os.path

Це дасть вам папку, де встановлений python


0

запустити такий файл у файлі .py:

import sys

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

-1

У мене є рецепт кухаря для пошуку речей у Linux / macos

Спочатку оновіть db locate, а потім виконайте a

locate WHATiWANTtoSEARCH | less

зробіть a / find, щоб знайти те, що ви шукаєте.

щоб оновити ваш db locate в macos, зробіть це:

sudo /usr/libexec/locate.updatedb

це іноді займає деякий час. Сподіваюся, це допомагає :)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.