розташування 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.