ทำไมไพ ธ อน 3 จึงไม่เป็นไพ ธ อนเริ่มต้น


42

ฉันพิมพ์pythonในหน้าต่างเทอร์มินัล ฉันได้รับ Python 2.7 และไม่ใช่ Python 3.5 ตามเอกสารนั้น Python 3.5 ควรโหลดไว้ล่วงหน้า


1
หากคุณตั้งค่าสภาพแวดล้อมเสมือนโดยใช้: "python3 -m venv my-venv" จากนั้นเทอร์มินัลใด ๆ จะเปิดใช้งานสภาพแวดล้อมเสมือนนั้นโดยการเรียก "source ... / my-env / bin / เปิดใช้งาน" จากนั้น python 3.5 จะเป็น เริ่มต้นในสถานีนั้น คุณสามารถตรวจสอบเวอร์ชั่นเริ่มต้นปัจจุบันได้โดยการเรียก "python -V"
Craig Hicks

ในขณะที่คำตอบของคุณมีประโยชน์ฉันถามว่าทำไม ไม่ใช่วิธีการ และนั่นคือการอภิปรายครั้งใหญ่ ที่นี่ ทำไมค่าเริ่มต้นควรเป็นรุ่นที่เก่ากว่าแทนที่จะเป็นรุ่นปัจจุบัน
givonz

1
คุณถูกต้องแน่นอนเกี่ยวกับ "ความคิดเห็น" ของฉัน! นี่คือเหตุผลที่ฉันเขียนความคิดเห็นและไม่ใช่คำตอบ
Craig Hicks

คำตอบ:


56

ฉันไม่รู้ว่าคุณกำลังอ่านอะไร "เอกสาร" หรืออะไร แต่/usr/bin/pythonเป็นเพียงลิงก์สัญลักษณ์ไปยังรุ่นเริ่มต้นของไพ ธ อนในกรณีนี้ 2.7 ซึ่งเป็นผลมาจากการพิมพ์pythonบนเทอร์มินัล นี่คือผลลัพธ์ของPEP 394ซึ่งกำหนดว่า

  • เวลาเป็นที่กระจายทุกคนควรให้แน่ใจว่าpythonpython2หมายถึงเป้าหมายเช่นเดียวกับ

type pythonและfile /usr/bin/pythonจะยืนยันสิ่งนี้

เหตุผลสำหรับการจัดเรียงนี้นอกเหนือจากการประชุมคือว่าแพคเกจแหล่งหลามเริ่มต้นใน Xenial เป็นรุ่น 2.7.11ดังนั้นการเชื่อมโยงสัญลักษณ์งูหลามชี้ไปที่รุ่นนี้

หากต้องการใช้หลาม 3 คุณจะต้องชัดเจนและประเภทpython3ในบรรทัดคำสั่งซึ่งเป็นที่แนะนำในกรณีที่คุณต้องการที่เฉพาะเจาะจงรุ่นนี้ยังสามารถทำได้ด้วยงูหลาม 2 python2พิมพ์ Ubuntu มีทั้ง python 2 และ 3 ตามค่าเริ่มต้นในทุกเวอร์ชั่นปัจจุบัน

มีแผนที่จะย้ายทุกอย่างไปยัง python 3และทำเครื่องหมายว่าเป็นค่าเริ่มต้น


นี่อาจเป็นปลั๊กอินของ rhythmbox-zeitgeist ที่ทำลายซึ่งขึ้นอยู่กับ zeitgeiigeist-python3 แต่ไม่สามารถหาได้
Khurshid Alam

2
นี่คือเอกสารที่ OP หมายถึง
SaidbakR

10

ที่จะได้รับหลาม 3.5 REPL python3หรือเรียกใช้สคริปต์ที่เข้ากันได้พิมพ์ นี่คือการรักษาความเข้ากันได้กับ python 2.x รุ่นเก่า (ซึ่งเคยเป็นมาเสมอและจะยังคงเชื่อมโยงอยู่python)

เส้นประสามารถหาได้pythonหากคุณตั้งค่า.desktopไฟล์ (ใน~/.local/share/applications/), เพื่อเปิดเทอร์มินัลและเริ่ม REPL เป็นต้น ไม่มีสภาพแวดล้อม GUI REPL ที่เป็นค่าเริ่มต้นสำหรับ python และความคาดหวังของอินเตอร์เฟสปกติคือผู้ใช้จะไปที่เทอร์มินัล

การพูดคุยของ python 3.5 เป็นค่าเริ่มต้นคือผู้ดูแลระบบที่โอนย้ายสคริปต์ระบบทั้งหมดจาก python 2.x ไปยัง python 3.x ไม่ใช่ว่า python 3 จะแทนที่ python 2 ในทุกกรณี


ดังนั้นฉันเดาคำถามที่ถูกต้องคือฉันจะเพิ่ม python3 ในเส้นทางของฉันเพื่อให้ดำเนินการโดยอัตโนมัติได้อย่างไร
givonz

คุณหมายความว่าอย่างไรคุณจะทำให้สคริปต์ไพ ธ อนทำงานเหมือนโปรแกรมที่คอมไพล์
Andrew Keech

เข้าใจแล้วขอบคุณ เพียงพิมพ์ python3 ที่พรอมต์คำสั่ง
givonz

2
AIUI จะทำอย่างไรกับ / usr / bin / python ในระยะยาวยังคงเป็นคำถามเปิด แนวทางปฏิบัติที่ดีที่สุดสำหรับสคริปต์ python2 คือการใช้ python2 อย่างชัดเจน
ปีเตอร์กรีน

1
แทนที่จะใช้ #!/usr/bin/python3(หรือ#!/usr/bin/python2) ในสคริปต์ควรใช้ (สำหรับงูใหญ่โดยเฉพาะ) ดีกว่า#!/usr/bin/env python3ถ้าคุณต้องการให้พกพาได้จากระยะไกล ส่วนใหญ่เป็นเพียงเอกสารประกอบเนื่องจากในหลาย ๆ กรณีจะมีการเรียกใช้งาน$ python3 your_pyprogram.pyต่อไป
ไมเคิล

4

pythonคุณคิดว่างูใหญ่เริ่มต้นควรจะใช้ได้ในฐานะที่ ข้อสันนิษฐานนั้นผิด

ในระบบที่มาพร้อมกับงูหลาม 3“โหลดไว้” และไม่มีการหลาม 2 ที่ทุกคนจะมีเพียงและไม่มีการpython3python

รหัสที่เขียนขึ้นสำหรับหลาม 3 python3ควรมองหาล่ามที่เรียกว่า รหัสที่เขียนขึ้นสำหรับงูหลาม 2 pythonในอดีตจะมองหา

อาจมาจุดในเวลาอาจจะเป็นทศวรรษที่ผ่านมาจากนี้ที่เกือบจะไม่มีใครจำได้ว่างูหลาม 2 เมื่ออาจจะเริ่มต้นในการอ้างถึงpython python3นี้จะหมดจดเพื่อความสะดวกและสามารถและไม่ควรทำก่อนกำหนดถ้าเลย! ไม่ต้องรีบร้อนเพราะผลกระทบต่อไปนี้:

“ปัจจุบันเก่า” ระบบจะมีความรู้ไม่python2เพียงpythonจึงทำให้ความรู้สึกที่สมบูรณ์แบบเพื่อให้งูหลาม 2 pythonรหัสมองหา นี่คือเหตุผลที่pythonควรอ้างถึง Python 2 สำหรับ“ ตราบเท่าที่มีรหัส Python 2 อยู่”

รหัสใหม่ที่เขียนขึ้นสำหรับงูหลาม 2 pythonหากที่ทำให้ความรู้สึกที่ดีที่สุดที่สามารถมองหา มันอาจจะมองหาpython2ถ้ามันตั้งใจที่จะทำงานเฉพาะในระบบ Python 3 ที่รับรู้และดูแลเป็นอย่างดี (ซึ่งควรมีลิงค์ดังกล่าว)

ประโยชน์ของการใช้รหัส Python 2 python2คือไม่ต้องมีการสัมผัสพิเศษเมื่อpythonเริ่มอ้างถึงpython3ซึ่งอาจไม่เกิดขึ้นหรือเมื่อpythonหายไปเลยซึ่งอาจจะเกิดขึ้นหรือไม่เกิดขึ้นก็ได้ (นั่นอาจเป็นจริงถ้ารหัส Python 2 ตายไปหลังจากสมมุติว่า Python 4 เป็นที่นิยมของล่ามpython4- เพราะให้มันชี้ไปที่ทั้งสองpython3หรือpython4อาจสับสนทั้งคู่)


2

Python มีทั้งรุ่น 2.x, 3.x ถ้าคุณเรียกว่าไพ ธ อนเนื่องจากมันชี้ไปที่ไพ ธ อน 2.x มันจะโหลดไพ ธ อน 2.x

ภาพด้านล่างจะช่วยคุณ

ป้อนคำอธิบายรูปภาพที่นี่


1
คุณจะพิมพ์คำสั่งเดียวกันและรับผลลัพธ์ที่แตกต่างกันอย่างไร
givonz

3
เอาต์พุตที่แตกต่างจากการเรียกใช้ครั้งที่สองของpythonคือการใช้<tab>เพื่อเคียวรี autocompleter ซึ่งจากนั้นเอาต์พุตการเปลี่ยนลำดับที่เป็นไปได้ของpython*และส่งคืนคุณให้พร้อมต์ใหม่
Andrew Keech

@ givonz อืมฉันใช้คีย์ TAB มันไม่ได้ส่งออก มันเป็นรูปแบบไบนารีที่เป็นไปได้
rɑːdʒɑ

คะแนนโหวตติดลบสำหรับอะไร
rɑːdʒɑ

1
ฉันไม่ได้ลงคะแนน แต่ฉันคิดว่าคำตอบควรอธิบายว่าทำไมผลลัพธ์ 2 รายการแรกจึงแตกต่างกันและบทบาทของอะไร apt-cacheโดยเฉพาะอย่างยิ่งสำหรับผู้เริ่มต้นใช้งาน Ubuntu
อัล

2

Python 3.x ควรทำงานกับ 16.04 - จริง ๆ แล้วมันจะทำงานอย่างแน่นอน ฉันมี Ubuntu 14.04 และฉันมี Python 3.4.3 - สิ่งที่คุณต้องทำเพื่อทดสอบว่าเป็นประเภทใดpython3และควรบอกคุณว่าคุณใช้รุ่นใด


2
ฉันจะไม่เรียกใช้วิทยาศาสตร์คอมพิวเตอร์ OS และการพูดอย่างเคร่งครัด: Ubuntu เป็นระบบปฏิบัติการบน Linux และไม่ใช่ Unix
magu_

ฉันยังไม่เข้าใจความแตกต่างของ lin bet & unix นอกเหนือจากคำสั่งบางคำสั่งให้ & แตกต่างกัน แม้ว่า gui จะสูงกว่าสิ่งที่ฉันเห็นใน solaris
givonz

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