ฉันจะลบ python 2.7 หลังจากติดตั้ง python 3.3 ได้อย่างไร


19

ฉันติดตั้ง python 3.3 บน Ubuntu 12.10 สำเร็จแล้ว เนื่องจากฉันไม่ต้องการงูหลามหลายรุ่นฉันต้องการลบงูหลาม 2.7 ที่มีอยู่ เมื่อฉันพยายามทำเช่นนั้นโดยใช้

sudo apt-get remove python2.7

Ubuntu เตือนฉันว่ามีส่วนประกอบที่ขึ้นกับระบบมากมายซึ่งจะถูกลบออกด้วย มันดูน่ากลัวจริงๆ

ดังนั้นมีวิธีการลบ python 2.7 โดยไม่ต้องลบส่วนประกอบที่ขึ้นกับระบบหรือฉันสามารถสั่งให้ผู้ติดตามเหล่านั้นใช้ python 3.3 ได้หรือไม่?


2
ฉันจะไม่แนะนำที่นี่ Python เวอร์ชั่นไม่รองรับเลยดังนั้นสคริปต์เก่าอาจมีปัญหาหากคุณไม่มีเวอร์ชั่นที่ถูกต้อง
tikend

คุณถูกต้อง python3.3 ได้ประกาศว่ามันไม่เข้ากันกับ python 2.7 ดังนั้นฉันควรเก็บไว้ ขอบคุณสำหรับคำแนะนำ!
phoenix bai

คำตอบ:


23

คุณทำไม่ได้

จากUbuntu wiki / Python :

แผนระยะยาว (เช่น 14.04)

ย้าย Python 2 ไปยังจักรวาลพอร์ตแอปพลิเคชัน Python ทั้งหมดใน Python 3 หลักเราจะไม่กำจัด Python 2.7 ทั้งหมด แต่เนื่องจากจะไม่มี Python 2.8 และ Python 2.7 จะมีอายุเกือบ 4 ปีตามเวลา รุ่น 14.04 LTS ถึงเวลาแล้วที่จะลดระดับ Python 2 สู่จักรวาล

ซึ่งหมายความว่าแพ็กเกจพื้นฐานจำนวนมากมีการพึ่งพาอย่างหนักที่ 2.7 และจะยังคงต้องใช้เวลาอีกมากในการย้ายสิ่งต่าง ๆ โปรดทราบว่า Python 3 มีการเปลี่ยนแปลงที่เข้ากันไม่ได้หลายประการ - ไม่ใช่การอัพเกรดแพ็คเกจปกติ

หากคุณต้องการกำจัด Python 2.7 จริงๆคุณจะต้องรอรุ่น 14.04 แต่ไม่มีการรับประกันใด ๆ


3
มันคือ 16.04 ตอนนี้
muru

มันคือ 18.04 ตอนนี้
Francesco Pasa

มันคือ 19.04 fu #! & ตอนนี้
Genarito

5

คุณทำไม่ได้และคุณไม่ต้องการ

Python เปลี่ยนแปลงอย่างมากระหว่าง 2.7 และ 3.0 และเข้ากันได้ย้อนหลัง สคริปต์ Python ที่เขียนขึ้นสำหรับ 2.7 ซึ่งใช้เพื่อสนับสนุนโครงสร้างพื้นฐานจำนวนมากของระบบไม่จำเป็นต้องทำงานอย่างถูกต้องกับ Python 3.x สคริปต์เหล่านั้นต้องได้รับการอัปเดตเพื่อให้ทำงานได้กับเวอร์ชันใหม่และจนกว่าจะมีสิ่งนั้นเกิดขึ้นคุณจะต้องใช้ Python 2.7

นี่คือเหตุผลที่คุณสังเกตเห็นการพึ่งพาจำนวนมากบน Python เก่า - ระบบขึ้นอยู่กับมัน นอกจากนี้ยังไม่มีอันตรายใด ๆ ในการติดตั้ง Python ทั้งสองเวอร์ชันในระบบเดียวกัน และคุณอาจเจอแอพพลิเคชั่นในอนาคตที่ยังคงใช้ Python 2.7 อยู่ดังนั้นการทำให้มันเป็นความคิดที่ดี


2

มาที่นี่ในปี 2019 เพราะฉันพัฒนาใน Python3 เป็นค่าเริ่มต้นและมาถึงข้อสรุปเดียวกับ OP หลังจากเห็นสิ่งที่จะถูกลบหลังจากทำงาน apt purge python

เนื่องจากสิ่งที่ฉันต้องการจริงๆคือโทรไปหา Python3 pythonฉันจึงวิ่ง

sudo rm /usr/bin/python
sudo ln -s /usr/bin/python3 /usr/bin/python

ด้วยวิธีนี้ถ้า Python2.7 ยังคงต้องการก็สามารถเรียกได้อย่างชัดเจนด้วยpython2.7ในขณะที่เพียงโทรpythonจะเริ่มต้นเพื่อ Python3 เนื่องจากการเชื่อมโยงสัญลักษณ์

ฉันไม่มีสคริปต์ระดับ bash ใด ๆ ที่เรียก python2.7 ด้วยpythonดังนั้นการเปลี่ยนแปลงนี้จะไม่ก่อกวน - ในขณะที่ระบบอื่น ๆ จะต้องปรับสคริปต์ของพวกเขาหากพวกเขาทำ

อุปสรรคหลักในการกระจายการเปลี่ยนคำสั่ง python จาก python2 เป็น python3 ไม่ได้เป็นการแตกภายในการกระจาย แต่แทนที่จะเป็นการแตกของสคริปต์ของบุคคลที่สามส่วนตัวที่พัฒนาโดย sysadmins และผู้ใช้อื่น

- คำสั่ง "python" บนระบบ Unix-Like

คำตอบนี้ไม่ได้เป็นการตอบสนองโดยตรงไปยัง OP แต่เป็นคนที่มีคำถามคล้ายกันนี้เป็นฟังก์ชั่นที่ฉันกำลังมองหาเมื่อฉันคิดว่าจะลบ 2.7 pythonแทนที่จะลบเพียงจัดลำดับความสำคัญที่หนึ่งได้รับกับการใช้งาน


1
มันทำให้ฉันเป็นความคิดที่ไม่ดี สคริปต์เก่า ๆ ที่สร้างขึ้นสำหรับ Python 2 จะเรียก/usr/bin/pythonในขณะที่เกือบทุกสคริปต์ที่สร้างขึ้นสำหรับ Python 3 จะรับรู้ถึงการเปลี่ยนแปลงและการโทรpython3ในปัจจุบัน การปล่อยให้pythonจุดpython2.7มีโอกาสน้อยที่จะทำลายสิ่งต่าง ๆ
vidarlo

ฉันจะบอกว่ามันขึ้นอยู่กับสภาพแวดล้อมเช่นฉันบอกว่าฉันไม่ได้สร้างสคริปต์ที่ต้องใช้ python2 และทำงานใน 3 - ในขณะที่ถ้าฉันทำการเปลี่ยนแปลงเช่นนี้ในสถานีใดสถานีหนึ่งของเราที่ทำงานด้วยสคริปต์อัตโนมัติมันจะก่อกวนมาก .
saniboy

มีกระบวนการระบบเฉพาะที่คุณจะสามารถแสดงรายการการเรียก / usr / bin / python นั้นได้หรือไม่? ฉันเปิดใจเสมอที่จะเปลี่ยนใจเมื่อได้รับข้อมูลใหม่
saniboy

ฉันพบว่าค่อนข้างน้อยใน 18.04 grep -r "/usr/bin/python" /usr/bin/ควรให้ภาพรวมคร่าวๆ มันอาจจะไม่ปิดการใช้งานระบบของคุณ แต่มันอาจทำให้บางสิ่งไม่ทำงาน solaarเช่น
vidarlo

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