ตำแหน่งหลามบน mac osx


99

ฉันสับสนเล็กน้อยกับ python บน osx ฉันไม่ทราบว่าเจ้าของแล็ปท็อปคนก่อนได้ติดตั้ง macpython โดยใช้ macport หรือไม่ และฉันจำได้ว่า osx มี python ในตัว ฉันลองใช้type -a pythonและผลลัพธ์ที่ได้กลับมา

python is /usr/bin/python
python is /usr/local/bin/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 ฉันพบข้อความเดียวกันกับด้านบน

อืมฉันสับสนเล็กน้อย ไหนคือ?

คำตอบ:


66

[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 ที่ติดตั้ง python.org หรืออาจสร้างจากแหล่งที่มา


58

ฉันพบวิธีที่ง่ายที่สุดในการค้นหาคุณสามารถใช้ได้

which python

มันจะแสดงสิ่งนี้:

/usr/bin/python


3
สิ่งนี้ไม่ตอบโจทย์การกระจายของ Python (ใครเป็นคนสร้าง)
Scott Prive

54

ใน Mac OS X อยู่ในกรอบ Python ใน/System/Library/Frameworks/Python.framework/Resources.

เส้นทางแบบเต็มคือ:

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

Btw เป็นเรื่องง่ายที่จะค้นหาว่าคุณสามารถค้นหาไบนารีเฉพาะได้ที่ไหน: which Pythonจะแสดงเส้นทางของไบนารี Python ของคุณ (ซึ่งอาจจะเหมือนกับที่ฉันโพสต์ไว้ด้านบน)


ใช่ฉันรู้แล้ว มันเป็นเพียงที่ฉันสับสน - ฉันรันล่ามบน / usr / local / bin / และพิมพ์ sys.executable มันบอกว่า / usr / bin / python แต่ฉันอ่านเอกสารและมันบอกว่า Apple ที่ให้มานั้นอยู่ใน / usr / bin / และ "A symlink to the Python executable ของ macpython วางอยู่ใน / usr / local / bin /"
goh

มันสมเหตุสมผลแล้ว: เมื่อคุณรวบรวม python ที่เรียกใช้งานได้ด้วยตัวเองและย้ายไปที่พูดว่า / Users / John / Downloads / มันจะแสดงให้คุณเห็นว่ามันอยู่ที่ / Users / John / Downloads / python คุณสามารถเรียกใช้ไฟล์ปฏิบัติการหลายตัวติดกันบนระบบเดียวกัน AFAIK หนึ่งใน Python.framework เป็นรายการหลักดังนั้นคุณควรพึ่งพาอันนั้น
elslooo

28
ที่จริงแล้ว Pythons ที่ Apple จัดหาให้ใน Mac OS X นั้นอยู่ใน/System/Library/Frameworks/Python.framework. สิ่งใดก็ตาม/Library/Frameworks/Python.frameworkมาจากการติดตั้งของบุคคลที่สามโดยปกติจะเป็นโปรแกรมติดตั้ง python.org (หรือผู้จัดจำหน่ายรายอื่น) หรือหากคุณสร้างเฟรมเวิร์กเริ่มต้นของ Python จากซอร์ส
Ned Deily

1
เมื่อฉันเรียกแสดงให้เห็นว่าการส่งออกฉันทำไมว่า - ฉันไม่เห็นว่ามันเป็น symlink หรือไม่? (ถามคำถามนี้ที่AskDifferent )/System/Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7ps aux/System/Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python
Zitrax

@ ทิมขอบคุณ เมื่อฉันไปที่ /Library/Frameworks/Python.framework/Versions/ ฉันไม่เห็น 2.7 (ซึ่งเป็นสิ่งที่ฉันได้ติดตั้งไว้) แต่เป็นไฟล์นามแฝงที่เรียกว่า 'ปัจจุบัน' ซึ่งเมื่อคลิกจะทำให้ฉันมีข้อผิดพลาด"การดำเนินการ ไม่สามารถแข่งขันได้เนื่องจากไม่พบรายการต้นฉบับสำหรับ "ปัจจุบัน" "
Pyderman

45

สิ่งนี้จะช่วยแก้ปัญหาทั้งหมดของคุณในการจัดการกับ Python บนเชลล์พื้นฐาน:

หากคุณมี Mac และคุณได้ติดตั้ง python3 เหมือนที่พวกเราส่วนใหญ่ทำ :) (with 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
สุดท้ายนี้ .... ขอบคุณ !!!!! ฉันพบปัญหานี้ในสภาพแวดล้อมเสมือนจริง โซลูชันยังใช้งานได้ เพียงแค่ต้องใช้ตำแหน่งหลามที่ถูกต้อง
Paul Jurczyk

1
นี่เป็นข้อมูลอ้างอิงที่มีประโยชน์สำหรับฉันสำหรับเชลล์พื้นฐาน - ขั้นตอนที่เพิ่มขึ้นมากมายและอธิบายได้ดีมาก :)
cellepo

6

บน High Sierra

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

ฉันมีสูตรทำอาหารสำหรับค้นหาสิ่งต่างๆใน linux / macos

ก่อนอื่นให้อัปเดตค้นหาฐานข้อมูลจากนั้นทำ

locate WHATiWANTtoSEARCH | less

ทำ / ค้นหาเพื่อค้นหาสิ่งที่คุณกำลังมองหา

ในการอัปเดต locate db ของคุณใน macos ให้ทำดังนี้:

sudo /usr/libexec/locate.updatedb

บางครั้งอาจใช้เวลาสักครู่ หวังว่านี่จะช่วยได้ :)


-1

เรียกใช้สิ่งนี้ในเทอร์มินัลโต้ตอบของคุณ

import os
os.path

จะให้โฟลเดอร์ที่ติดตั้ง python

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.