ฉันจะติดตั้ง Python เวอร์ชั่นอื่นโดยใช้ apt-get ได้อย่างไร


125

ฉันจะติดตั้ง Python เวอร์ชันอื่นโดยใช้ apt-get ได้อย่างไร

เห็นได้ชัดว่าฉันรู้ว่าฉันสามารถติดตั้งได้โดยใช้ tar บอลแหล่งที่มา แต่ฉันไม่ต้องการติดตั้งจากแหล่งที่มาและใช้ตัวจัดการแพคเกจแทนนั่นคือสิ่งที่มันมีอยู่ ที่ใดที่หนึ่งมีชื่อเสียงสร้างไฟล์. deb สำหรับการเผยแพร่ Python ล่าสุด (ทำไม python.org ไม่เกินกว่าฉัน) ที่ฉันสามารถอ้างอิงได้

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

หากไม่มีวิธียกเว้นการสร้างจากต้นทางมีแพคเกจ (หลอก) ที่ฉันสามารถติดตั้งได้ซึ่งจะให้การพึ่งพาทั้งหมดที่จำเป็นโดยไม่ต้องค้นหาและติดตั้งทีละรายการหรือไม่ เพื่อที่ฉันจะไม่ได้รับ:

The necessary bits to build these optional modules were not found:
_bz2                  _curses               _curses_panel      
_dbm                  _gdbm                 _lzma              
_sqlite3              _ssl                  _tkinter           
readline              zlib  


คุณเคยได้รับE: Couldn't find any package by regex 'python3.5'และทำให้ติดตั้งผ่านapt-get install python3.5ไม่ได้?
Charlie Parker

คำถามที่คล้ายกัน: askubuntu.com/questions/310441/…
Charlie Parker

ข้อเสนอแนะที่ดีบางอย่างที่นี่: quora.com/…
Charlie Parker

1
@CharlieParker คุณลองติดตั้งAnacondaไหม?
M. Becerra

คำตอบ:


169

เฟลิกซ์ครัลล์วิ่งการเสนอขาย PPA พื้นใด ๆรุ่นของงูใหญ่ (อย่างจริงจังมี 2.3.7 สร้างสำหรับสดใส ... ) หลาย Ubuntu รุ่นที่https://launchpad.net/~deadsnakes/+archive/ubuntu/ppa

ทำตามปกติ:

sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt-get update
sudo apt-get install python3.5

มันจะไม่เขียนทับที่มีอยู่ซึ่งยังคงเป็นpython3.4 symlinkedpython3

อย่าเปลี่ยน symlink! เห็นได้ชัดว่ามีฟังก์ชั่นระบบจำนวนมากที่ทำงานไม่ถูกต้องกับ python3.5

ฉันลองสิ่งนี้แล้วไม่สามารถเปิดเทอร์มินัลตัวอัปเดตซอฟต์แวร์ ...

cd /usr/bin
sudo rm python3

อัพเกรดเจ้าเล่ห์จะปรับตัวเข้ากับเมตาแพคเกจให้ชี้ไปที่python3 python3.5ฉันไม่ได้คาดหวังความเสียหาย แต่ ณ จุดนี้พื้นที่เก็บข้อมูลต่างประเทศไม่จำเป็นอีกต่อไป เพื่อความปลอดภัยจริงๆคุณสามารถล้าง PPA ก่อนทำการอัพเกรด


5
สำหรับ noob ออกมีอย่า symlink! ยังไม่ symlinking ก็หมายความว่าคุณจะต้องพิมพ์ python3.5 จากบรรทัดคำสั่งในการทำงานหลาม 3.5
คริสฮอว์ค

4
คุณช่วยชี้ฉันได้ฉันจะใช้ pip ของ 3.4 กับ 3.5 นี้ได้อย่างไร
Groosha

2
@ kondra007 ฉันทำตามคำแนะนำจากpip.pypa.io/en/stable/installing (โปรดอ่านคำเตือนที่นั่น) และสองคำสั่งเหล่านี้wget https://bootstrap.pypa.io/get-pip.py; sudo python3.5 get-pip.pyทำให้ฉันมี pip ที่ทำงานได้สำหรับ python 3.5 แต่ pip3.4 ไม่ทำงานอีกต่อไป หากใครรู้ดีกว่าโปรดแสดงความคิดเห็น
ndemou

2
นอกจากนี้ยังมีการตั้ง python3.5 เป็นค่าเริ่มต้น และเพิ่มนี้~$ vim ~/.bashrc alias python=python3.5แล้ว~$source ~/.bashrc
Krishnadas PC

1
คำแนะนำ: ถ้าadd-apt-repository: command not found, ให้รัน apt-get install software-properties-common python-software-propertiesเพื่อติดตั้ง
Mithril

35

ลิงก์ Youtubeนี้ช่วยให้ฉันติดตั้งได้

ขั้นตอนคือ:

sudo apt-get install libssl-dev openssl
wget https://www.python.org/ftp/python/3.5.0/Python-3.5.0.tgz
tar xzvf Python-3.5.0.tgz
cd Python-3.5.0
./configure
make
sudo make install

ในการตรวจสอบว่าติดตั้งไพ ธ อนประเภทpython3.5อื่นแล้ว:

sudo ln -fs /opt/Python-3.5.0/Python /usr/bin/python3.5

3
OP กล่าวว่าเขาไม่ต้องการรวบรวมจากแหล่งข้อมูล
Michael Bates

3
ใช่คุณถูก. การคอมไพล์จากแหล่งที่มาอาจทำให้เกิดปัญหาการอ้างอิงต่อไป แต่นั่นคือวิธีที่ฉันจะแก้ไข หากมีวิธีที่ดีกว่าฉันอยากรู้อย่างแน่นอน
joydeep bhattacharjee

5
พิจารณา./configure --enable-optimizations stackoverflow.com/questions/41405728/…
warvariuc

1
@CharlieParker เนื่องจาก Python ไม่ได้ถูกสร้างขึ้นมาสำหรับระบบปฏิบัติการเฉพาะ มันหมายถึงการทำงานในทุกแพลตฟอร์ม สำหรับ Linux นี่หมายความว่าแต่ละรุ่นจะต้องรวบรวมและแจกจ่ายสำหรับแต่ละรุ่นของ Linux distro แต่ละตัว (ซึ่งมีจำนวนมาก) หรือแจกจ่ายแหล่งที่มาและให้ผู้ใช้รวบรวมในสภาพแวดล้อมที่จะเป็น มือสอง หลังเป็นไปได้มากขึ้น
CJStuart

2
คุณต้องคอมไพเลอร์ c / c ++ จากapt-get install build-essential
bato3

13

เพียงทำตามขั้นตอนเหล่านั้น (ทดสอบแล้ว):

ขั้นตอนที่ 1 - ติดตั้งแพคเกจที่จำเป็น

ใช้คำสั่งต่อไปนี้เพื่อติดตั้งสิ่งที่จำเป็นต้องมีสำหรับ Python ก่อนทำการติดตั้ง

sudo apt-get install build-essential checkinstall
sudo apt-get install libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev

ขั้นตอนที่ 2 - ดาวน์โหลด Python 3.5.2

ดาวน์โหลด Python โดยใช้คำสั่งต่อไปนี้จากเว็บไซต์อย่างเป็นทางการของ Python คุณสามารถดาวน์โหลดเวอร์ชันล่าสุดแทนที่ที่ระบุด้านล่าง

cd /usr/src
sudo wget https://www.python.org/ftp/python/3.5.2/Python-3.5.2.tgz

แยกแพ็คเกจที่ดาวน์โหลดมา

sudo tar xzf Python-3.5.2.tgz

ขั้นตอนที่ 3 - รวบรวมแหล่งหลาม

ใช้ชุดคำสั่งด้านล่างเพื่อคอมไพล์ซอร์สโค้ดหลามบนระบบของคุณโดยใช้ altinstall

cd Python-3.5.2
sudo ./configure
sudo make altinstall

make altinstall/usr/bin/pythonถูกนำมาใช้เพื่อป้องกันการเปลี่ยนค่าเริ่มต้นหลามแฟ้มไบนารี

ขั้นตอนที่ 4 - ตรวจสอบเวอร์ชันของ Python

ตรวจสอบเวอร์ชั่นล่าสุดที่ติดตั้งไพ ธ อนโดยใช้คำสั่งด้านล่าง

$ python3.5 -V

Python 3.5.2

แหล่ง


2
+1 สำหรับการใช้ altinstall โดยค่าเริ่มต้น ไม่มีสถานการณ์จริงมากนักที่คุณสามารถอยู่ได้ด้วยเวอร์ชันเดียว แม้กระทั่งระบบที่มี Python3 เป็นค่าเริ่มต้นคุณอาจถูกบังคับให้ติดตั้ง Python แบบย้อนกลับ -> Python2 แทนหรือเพิ่ม Python2
erm3nda

1
ฉันได้รับข้อผิดพลาดตามที่อธิบายไว้ที่นี่ - bugs.python.org/issue31652ต้องทำงานsudo apt-get install libffi-devเพื่อแก้ไข
Nishan Chathuranga

ฉันจะเพิ่มsudo apt-get install liblzma-devเพื่อเปิดใช้งานการสนับสนุน lzma
v.grabovets

6

เท่าที่ฉันสามารถบอกได้ว่าอย่างน้อยในคอนเทนเนอร์นักเทียบท่าเราสามารถใช้apt-getไพ ธ อน 3 ได้

ครั้งแรกที่ฉันวิ่งเข้าไปในภาชนะอูบุนตูพร้อมภาชนะ:

docker run -it --rm ubuntu:latest bash

แล้วด้วยเหตุผลบางอย่างมันจำเป็นต้องปรับปรุงสิ่งอูบุนตูบางอย่างดังนั้นฉันได้ (ภายในคอนเทนเนอร์):

apt-get update && apt-get install -y build-essential git libjpeg-dev

และฉันก็ติดตั้ง python3 และดูเหมือนว่ามันจะเป็น python 3.5 โดยอัตโนมัติ

apt-get install python3
apt-get install python3-pip

และเพื่อทดสอบว่า pip ทำงานให้ดาวน์โหลดได้หรือไม่:

pip3 install tensorflow

ดูเหมือนว่าทั้งหมดจะทำงานได้ดีสำหรับฉัน

หมายเหตุสำคัญ: ดูเหมือนว่าหากคุณติดตั้ง python 3.4 ไว้แล้วapt-get install python3จะไม่ทำงานเพราะแจ้งว่าคุณมีอยู่แล้ว ดูเหมือนว่าเป็นหนึ่งในปัญหาของฉันเพราะฉันเริ่มต้นจากภาพนักเทียบท่าจาก tensorflow (โดยเฉพาะgcr.io/tensorflow/tensorflow:latest-devel-py3) และบางอย่างในภาพนั้น (ฉันคิดว่ามันมี python 3.4 แต่อาจเป็นอย่างอื่น) ไม่อนุญาตให้ฉันอัปเดต หลามของฉันเพื่อรับงูหลาม 3.5


เครดิต: ฉันค้นพบสิ่งนี้เมื่อฉันถามสิ่งต่อไปนี้: https://stackoverflow.com/questions/42122826/can-one-use-python-3-5-in-a-docker-container-based-out-of-the -tensorflow-นักเทียบท่า


หมายเหตุ: หนึ่งสามารถเพียงแค่ติดตั้งงูใหญ่ สำหรับนักเทียบท่าตัวอย่างหนึ่งสามารถทำได้:

docker pull continuumio/anaconda3
docker run -i -t continuumio/anaconda3 /bin/bash

จากเว็บไซต์ทางการของพวกเขา: https://hub.docker.com/r/continuumio/anaconda3/

โซลูชันนี้ติดตั้ง python 3.6 แต่ฉันแน่ใจว่าถ้าคุณมองเข้าไปที่นั่นคุณสามารถรับ python 3.5 ได้ถ้านั่นคือสิ่งที่คุณต้องการ

หมายเหตุ: คุณควรใช้สภาพแวดล้อมเสมือนเช่น virtual env หรือ conda / anaconda ต่อไปเว้นแต่ว่าคุณจะใช้ docker อยู่ดี แค่อยากจะเตือนผู้คน


1
"in a docker container" เป็นคำสั่งที่ธรรมดามาก: ทุกอย่างขึ้นอยู่กับภาพที่เป็นที่เก็บตัวอย่างเช่น Ubuntu รุ่นใด ยิ่งกว่านั้น, อาจมีรุ่นรองเช่น 3.5 หรือ 3.6 ที่ไม่มีใน Ubuntu หนึ่งรุ่น (เช่น 14.04)
giorgiosironi

2

มีการแจกแจงหลามแบบใหม่จำนวนมากเพื่อติดตั้งผ่าน apt-get ในรายการในแพ็คเกจของ Ubuntu

เป็นตัวอย่างในขณะนี้มีเวอร์ชันต่อไปนี้:

python2.7

python3.2

python3.4

python3.5

python3.6

ความพร้อมใช้งานแตกต่างกันไปตามรุ่นของ Ubuntu ตัวอย่างเช่น 3.5 มีให้สำหรับ Xenial, Yakkety และ Zesty และ 3.6 สำหรับ Yakkety และ Zesty แต่คุณต้องเปิดใช้งานที่เก็บจักรวาลถ้าไม่เปิดใช้งานเพื่อรับมันผ่าน apt-get หากต้องการตรวจสอบความพร้อมใช้งานสำหรับ Ubuntu เวอร์ชันของคุณให้ตรวจสอบลิงก์ด้านบน

การมองอย่างรวดเร็วบ่งบอกว่าคำตอบนี้ยังคงใช้ได้เนื่องจาก PPA นั้นมี 3.6 แม้สำหรับ Trusty


รุ่นหลามที่มีอยู่ใน อูบุนตู Repoไม่ได้เป็นรุ่นใหม่ล่าสุดหลาม
yaitloutou

@yaitloutou คำถามที่ว่า "ใหม่กว่า" ไม่ใช่ "ใหม่ที่สุด" โดยทั้งหมดรู้สึกอิสระที่จะเขียนคำตอบที่ดีกว่า
Elder Geek

คุณถูกต้อง แต่เนื่องจากค่อนข้างใหม่กว่าสิ่งที่ไม่ได้ระบุฉันตีความว่าเป็นรุ่นใหม่ล่าสุด :)
yaitloutou

@yaitloutou รู้สึกฟรีและโดยทั้งหมดเขียนคำตอบที่ดีกว่า! ฉันแน่ใจว่ามันจะได้รับการชื่นชม
เอ็ลเดอร์ Geek

ฉันเพิ่งเริ่มใช้งานที่นี่และฉันยังคงเรียนรู้ ขออภัยถ้าคุณพบความคิดเห็นของฉันในคำตอบของคุณเสือก
yaitloutou

0

ฉันจะพิจารณาใช้สภาพแวดล้อมเสมือนจริงแทนที่จะติดตั้งเวอร์ชันหลามผ่าน apt-get

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

นอกจากนี้คุณไม่จำเป็นต้องเข้าถึง sudo ขณะติดตั้งไลบรารี่ใด ๆ (ผ่าน pip ฯลฯ )


11
ฉันคิดว่าคุณต้องติดตั้งเวอร์ชันของ python ที่คุณต้องการก่อนจึงจะสามารถใช้งานได้ในสภาพแวดล้อมเสมือนจริง
Nzbuu

1
คุณติดตั้งไพ ธ อนรุ่นที่ต้องการในสภาพแวดล้อมเสมือนจริงกว่าที่คุณเปลี่ยนเส้นทางที่เกี่ยวข้องกับไพ ธ อนเพียงแค่เรียกใช้สคริปต์ "เปิดใช้งาน" ในสภาพแวดล้อมเสมือน
devrimbaris

นี้เป็นจริงว่าสิ่งที่ฉันต้องการที่จะทำสิ่งแรกที่ผมพยายามทำหลังจากทำตาม @ คำตอบ Nephente virtualenv -pเป็นจุดที่จะใช้มัน แต่มันจะระเบิดด้วย "ImportError: ไม่สามารถนำเข้าชื่อ 'HTTPSHandler'"
Michael Scheper

1
ทำไม downvote นี้ envs เสมือนมักจะทำงานได้ดี
Charlie Parker

คุณจะติดตั้ง env เสมือนใน Ubuntu ได้อย่างไร (ตามที่คุณแนะนำ) แต่ด้วย python 3.5
ชาร์ลีปาร์คเกอร์

0

Condaได้รับการปรับปรุงอย่างแข็งขันและช่วยให้คุณติดตั้งงูหลามหลายรุ่นใน venvs ที่ได้รับการจัดการโดยไม่ต้องเบื่อกับการตั้งค่าทั้งหมดด้วยตัวคุณเอง ปัญหาการหาเส้นทางส่วนขยายแบบไบนารีอาจได้รับการแก้ไขในหลาย ๆ แอนาคอนดาที่มีการจัดการ / การใช้ pip

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