เปลี่ยนรุ่นเริ่มต้น Python3 ใน Ubuntu


72

ฉันใช้ Ubuntu 16.04 LTS ฉันpython3ติดตั้งแล้ว มีสองรุ่นที่ติดตั้งอยู่และpython 3.4.3 python 3.6เมื่อใดก็ตามที่ฉันใช้python3คำสั่งจะใช้เวลาpython 3.4.3เริ่มต้น ฉันต้องการที่จะใช้กับpython 3.6python3

python3 --version แสดงให้เห็นว่า version 3.4.3

ผมติดตั้งที่สนับสนุนansible version > 3.5ดังนั้นเมื่อใดก็ตามที่ฉันพิมพ์ ansible ใน terminal มันจะพ่นข้อผิดพลาดเพราะpython 3.4


คำสั่งที่ใช้ในการดำเนินการหลาม 3.6 คืออะไร?

คำสั่งคือ: -
python3.6

3
คุณsudo update-alternatives --config python3พูดว่าอะไร
Mikael Kjær

1
การปรับปรุงทางเลือก: ข้อผิดพลาด: ไม่มีทางเลือกสำหรับ python3
codeclue

ดูความคิดเห็นของฉันในคำตอบด้านล่างเกี่ยวกับวิธีใช้ ansible กับ python3 รุ่นที่เฉพาะเจาะจง คุณสามารถลองลบ python 3.4
Mikael Kjær

คำตอบ:


96

จากความคิดเห็น:

sudo update-alternatives --config python

จะแสดงข้อผิดพลาด:

update-alternatives: error: no alternatives for python3 

คุณต้องอัปเดตของคุณupdate-alternativesจากนั้นคุณจะสามารถตั้งค่าเวอร์ชันหลามเริ่มต้นของคุณได้

sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.4 1
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.6 2

จากนั้นเรียกใช้:

sudo update-alternatives --config python

ตั้ง python3.6 เป็นค่าเริ่มต้น

หรือใช้คำสั่งต่อไปนี้เพื่อตั้ง python3.6 เป็นค่าเริ่มต้น:

sudo update-alternatives  --set python /usr/bin/python3.6

1
คำตอบนี้อาจจะผิดaptพลาด sudo apt updateหลังจากเลือกรุ่นที่แตกต่างกันของงูหลามพยายามที่จะเรียก ถ้ามันจะช่วยให้คุณมีข้อผิดพลาดเหมือนModuleNotFoundError: No module named 'apt_pkg'ที่คุณต้องการที่จะไป/usr/lib/python3/dist-packagesและสร้าง symlink ln -s apt_pkg.cpython-{34m,36m}-x86_64-linux-gnu.soไปนี้:
Giacomo Alzetta

มันทำให้ฉันมีข้อผิดพลาด: $ sudo update-alternatives --set python /usr/bin/python3.6 update-alternatives: error: no alternatives for pythonข้อเสนอแนะใด ๆ ?
Slava Fomin II

1
@ GAD3R ขอบคุณ ฉันจัดการเพื่อสร้าง symlink ด้วยตนเองเพื่อชี้ไปยัง Python 3.6 นอกจากนี้ฉันไม่ได้ติดตั้ง 3.7
Slava Fomin II

การpython3ชี้ไปที่python3.8วิธีการนี้ได้ทำลายgnome-terminalฉัน
บอริส

10

คุณสามารถทำได้โดยใช้ขั้นตอนง่าย ๆ ด้านล่าง -

  1. ตรวจสอบเวอร์ชั่นของหลามบนเทอร์มินัล - python --version
  2. รับสิทธิ์ผู้ใช้รูท ในประเภทอาคารผู้โดยสาร -sudo su
  3. จดรหัสผ่านผู้ใช้รูท
  4. ดำเนินการคำสั่งนี้เพื่อเปลี่ยนไปใช้ python 3.6 -
    update-alternatives --install /usr/bin/python python /usr/bin/python3 1
  5. ตรวจสอบเวอร์ชั่นของหลาม - python --version
  6. เสร็จสิ้น

1
ทำงานได้ง่ายในการอ่านและไม่ใช้นามแฝง +1
Carlos Pinzón

ทำงานได้ดีบน Ubuntu 18.04 ง่ายกว่าโซลูชันอื่น ๆ ขอบคุณมาก
Mohammad Heydari

7

สร้าง symlink สำหรับ / usr / bin / python3 ใน LinuxMint ของฉัน:

# ls -lh /usr/bin/python3 /usr/bin/python
lrwxrwxrwx 1 root root 9 ноя 24  2017 /usr/bin/python -> python2.7
lrwxrwxrwx 1 root root 9 сен  6  2017 /usr/bin/python3 -> python3.5

# mv /usr/bin/python
# cp /usr/bin/python3 /usr/bin/python
# python --version
Python 3.5.2

6

การใช้คำสั่งเหล่านี้สามารถช่วยคุณได้:

  1. ตรวจสอบเวอร์ชั่นของไพ ธ อน: ls /usr/bin/python*
  2. นามแฝง: alias python='/usr/bin/pythonxx'
  3. ใหม่เข้าสู่ระบบ: . ~/.bashrc
  4. ตรวจสอบเวอร์ชั่นของหลามอีกครั้ง: python --version

ขอบคุณ แต่หลังจากรีสตาร์ทคอมพิวเตอร์ไพ ธ อนหลักจะยังคงเป็นงูเหลือมอดีต 2.7
Mohammad Heydari

3

คำตอบง่าย ๆ คือการเพิ่มนามแฝงสำหรับ python3.6

เพียงเพิ่มบรรทัดนี้ในไฟล์ ~ / .bashrc: alias python3="python3.6"จากนั้นปิดเทอร์มินัลแล้วเปิดขึ้นมาใหม่ ตอนนี้เมื่อคุณพิมพ์จะได้รับการแปลเป็นpython3 xxxpython3.6 xxx

โซลูชันนี้แก้ไขปัญหาของคุณโดยไม่จำเป็นต้องปรับแต่งระบบของคุณหนักเกินไป

แก้ไข:

ดังที่Mikael Kjærชี้ให้เห็นว่านี่เป็นการกำหนดค่าที่ผิดพลาดของระบบของคุณ

เท่าที่เห็นที่นี่:

ตั้งansible_python_interpreterค่าตัวเลือกการกำหนดค่าเป็น / usr / bin / python3 ตัวเลือกการกำหนดค่า ansible_python_interpreter โดยปกติแล้วจะกำหนดต่อโฮสต์เป็นตัวแปรสินค้าคงคลังที่เกี่ยวข้องกับโฮสต์หรือกลุ่มของโฮสต์:

  # Example inventory that makes an alias for localhost that uses python3
  [py3-hosts]
  localhost-py3 ansible_host=localhost ansible_connection=local

  [py3-hosts:vars]
  ansible_python_interpreter=/usr/bin/python3

ตามที่เห็นที่นี่เกี่ยวกับไฟล์ปรับแต่ง:

การเปลี่ยนแปลงสามารถทำได้และใช้ในไฟล์การกำหนดค่าซึ่งจะถูกประมวลผลในลำดับต่อไปนี้:

* ANSIBLE_CONFIG (an environment variable)
* ansible.cfg (in the current directory)
* .ansible.cfg (in the home directory)
* /etc/ansible/ansible.cfg

ที่จริงแล้วฉันกำลังติดตั้ง ansible ซึ่งรองรับเฉพาะ> python 3.5
codeclue

1
คุณสามารถตั้งค่าansible_python_interpreterตัวแปรให้ใช้ python3.6 ของคุณ docs.ansible.com/ansible/latest/python_3_support.html
Mikael Kjær

@ MikaelKjærฉันเพิ่งเพิ่มความคิดเห็นของคุณไปยังคำตอบของฉัน

1

ถ้าคุณมีงูหลามหลายรุ่นในระบบของคุณ คุณเพียงแค่ต้องอัพเดทลิงก์สัญลักษณ์ของไพ ธ อน/usr/bin/

root@irshad:/usr/bin# ls -lrth python*
lrwxrwxrwx 1 root root    9 Apr 16  2018 python -> python2.7
-rwxr-xr-x 1 root root 3.6M Nov 12  2018 python2.7
-rwxr-xr-x 2 root root 4.4M May  7 14:58 python3.6

ในตัวอย่างด้านบนหากคุณเห็นผลลัพธ์ของpython --versionคุณจะได้รับpython2.7

ตอนนี้อัปเดต plink symlink โดยใช้คำสั่งด้านล่าง

root@irshad:/usr/bin# unlink python
root@irshad:/usr/bin# ln -s /usr/bin/python3.6 python
root@irshad:/usr/bin# python --version
Python 3.6.8

0

การอัพเดตทางเลือกคือการเปลี่ยน symlink ของระบบเป็น symlinks ที่ผู้ใช้กำหนด / ผู้ดูแลระบบกำหนด หากคุณติดตั้ง python3 หลายรุ่นในระบบของคุณและต้องการควบคุมเวอร์ชันของ python3 ที่จะเรียกใช้เมื่อเรียกใช้ python3 ทำดังต่อไปนี้

sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.4 1
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.5 2

เรียกใช้คำสั่งด้านล่างหากคุณต้องการเปลี่ยนลำดับความสำคัญในอนาคต

update-alternatives --config python3

คำอธิบาย: -

sudo update-alternatives --install <symlink_origin> <name_of_config> <symlink_destination> <priority>

คุณสามารถเปลี่ยน name_of_config เป็น python4 ได้ แต่คุณต้องเรียกใช้ตัวเลือกอัพเดต - ตั้งค่าด้วย python4 เพื่อกำหนดค่าใหม่

การใช้วิธีการนี้ทำให้คุณสามารถควบคุมเวอร์ชันของ python และ python3 ของระบบแยกกันได้


0

การตรวจสอบครั้งแรกคุณโฟลเดอร์ python3.6

ls /usr/bin/python3.6

ถ้าคุณมีโฟลเดอร์เช่น python3.6 ดีไป

จากนั้นอัปเดตทางเลือก

sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 1

ตอนนี้อัพเดตการกำหนดค่าใหม่สำหรับ python3

sudo update-alternatives --config python3

ตรวจสอบเวอร์ชั่นของหลาม

python3 --version


0

คุณสามารถเปลี่ยนการเชื่อมโยง simbolic จากภายในln -sf python3.6 python3 /usr/binด้วยสิ่งนี้เมื่อคุณเรียกpython3มันว่าจะดำเนินการpython3.6

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