ติดตั้ง Python 3.6 ได้อย่างไร


107

ฉันต้องการติดตั้ง Python ล่าสุดซึ่งเป็น 3.6 ณ เวลาที่โพสต์นี้ อย่างไรก็ตามที่เก็บข้อมูลบอกว่า Python 3.4.2 เป็นเวอร์ชั่นใหม่ล่าสุด

ฉันได้ลองแล้ว:

$ sudo apt-get update
$ sudo apt-get install python3

python3 is already the newest version.

$ python -V

Python 3.4.2

ในการอัพเกรดเป็น Python 3.6 บนเวิร์กสเตชัน Windows ของฉันฉันเพิ่งดาวน์โหลด exe คลิก "ถัดไป" สองสามครั้งและก็เสร็จสิ้น ขั้นตอนที่เหมาะสมและเป็นที่ยอมรับอย่างเป็นทางการในการติดตั้ง Python 3.6 บน Debian Jessie คืออะไร


6
ที่เก็บข้อมูล Debian เริ่มต้นประกอบด้วยแพคเกจซอฟต์แวร์ที่รวบรวมโดยเฉพาะสำหรับรุ่น Debian ที่แน่นอน ยกเว้นการอัปเดตความปลอดภัย (โดยเฉพาะอย่างยิ่งการเปลี่ยนแปลงเพียงเล็กน้อยที่จำเป็นในการแก้ไขช่องโหว่ด้านความปลอดภัย) ซอฟต์แวร์รุ่นใหม่ส่วนใหญ่อาจไม่สามารถใช้งานได้จนกว่าจะเปิดตัวรุ่นใหญ่ครั้งต่อไปเพื่อหลีกเลี่ยงความไม่แน่นอนที่อาจเกิดขึ้น
phk

@phk ในกรณีนั้นไม่ควรใช้พฤติกรรมที่คล้ายกับ pip เช่นมีค่าเริ่มต้นที่ 3.4.2 เมื่อไม่ได้ระบุรุ่นและอนุญาตให้ผู้ใช้ร้องขอ 3.6 ด้วยการตั้งค่าสถานะอย่างชัดเจนหรือไม่ เพียงแค่ความคิด :)
dvtan

1
นี่หมายความว่าคน Debian จะต้องดูแล Python ทั้งหมดเหล่านี้ทุกรุ่น Debian ที่รองรับ แน่นอนว่ามันอาจเป็นไปโดยอัตโนมัติ แต่ก็ยังมีจำนวนมาก นอกจากนี้ผู้ใช้ระดับสูงที่ต้องการเวอร์ชั่นที่ใหม่กว่าก็สามารถใช้คลังเก็บที่กำหนดเองได้เช่นกัน บางครั้งผู้เขียนซอฟแวร์ที่ตัวเองได้รับการรักษาพวกเขาสำหรับ Debian และลินุกซ์อื่น ๆ ที่นิยมเช่นในกรณีของออราเคิล VirtualBox
phk

1
Python 3.6 (แต่rc1) เพิ่งมาถึง Debian Experiment อาจเป็นไปได้ที่จะส่งคืนให้เจสซีซึ่งอาจมีการปรับเปลี่ยนเล็กน้อย
Faheem Mitha

ปรับปรุง สิ่งปลูกสร้างนี้เสร็จสิ้นแล้วสำหรับฉันบน Debian stable (jessie) อย่างไรก็ตามนั่นไม่ได้หมายความว่ามันจะติดตั้งสำเร็จและไม่ทำให้เกิดปัญหา ขั้นตอนต่อไปที่สมเหตุสมผลคือการทดสอบบน VM การทดสอบที่เสถียร มีใครสนใจไหม?
Faheem Mitha

คำตอบ:


66

Debian ไม่มี Python 3.6 ในที่เก็บของ แต่การทดสอบมี

$ sudo nano /etc/apt/sources.list
# add
deb http://ftp.de.debian.org/debian testing main
$ echo 'APT::Default-Release "stable";' | sudo tee -a /etc/apt/apt.conf.d/00local
$ sudo apt-get update
$ sudo apt-get -t testing install python3.6
$ python3.6 -V

คุณถามหา:

กระบวนการที่เหมาะสมและเป็นที่ยอมรับอย่างเป็นทางการ

แต่ฉันต้องชี้ให้เห็นว่านี่ไม่ใช่วิธีแก้ปัญหาอย่างเป็นทางการเพราะใช้การทดสอบที่เก็บ


62
คำเตือน:สิ่งนี้จะอัปเกรดระบบของคุณให้เป็นไฮบริดของเดเบียนที่คุณใช้อยู่ในขณะนี้ (อาจเป็น 'เสถียร') และ 'ไม่เสถียร' และ 'ทดสอบ' สิ่งนี้จะเลวร้ายยิ่งกว่าการอัปเกรดแบบ dist ไปเป็นแบบไม่เสถียรและการเก็บเชอร์รี่จากแพคเกจการทดลองหรือ (ยังดีกว่าการคงความเสถียรและการเก็บเชอร์รี่จาก backport และ / หรือไม่แน่นอนและ / หรือการทดลอง) การคืนค่าจากสิ่งนี้จะเป็นไปไม่ได้ ไม่แนะนำเว้นแต่คุณจะมีประสบการณ์มากมายเกี่ยวกับบรรจุภัณฑ์เดเบียนและเดเบียน
cas

8
คำตอบที่แก้ไขเพื่อตั้งค่าเริ่มต้นของ apt ให้เสถียร และลบ 'apt-get upgrade' ที่บ้าคลั่ง (ซึ่งจะอัพเกรดทุกอย่างเป็นเวอร์ชั่นล่าสุดที่มีให้ในแบบไม่เสถียรหรือทดลองยกเว้นสิ่งที่จะทำให้การลบแพ็คเกจอื่นออก) นั่นน่าจะทำให้ขั้นตอนนี้อันตรายน้อยลง แต่ก็ยังไม่ปลอดภัย และยังไม่แนะนำสำหรับมือใหม่ 'การทดลอง' ไม่เหมาะสำหรับการใช้งานชั่วคราวมีไว้สำหรับสิ่งแปลก ๆ ที่ยังไม่ทดลองและอาจเสียหายซึ่งอาจขัดแย้งหรือแตกหักแม้ใน 'ไม่เสถียร' มันยังใช้เป็นพื้นที่สำหรับการอัพเกรดหลายแพคเกจใหญ่
cas

1
คำตอบที่แก้ไขเนื่องจาก python 3.6.2 คือ (ตอนนี้) ในที่testingเก็บซึ่งปลอดภัยสำหรับผู้ใช้โดยเฉลี่ย
m4p85r

4
อย่าลองทำเช่นนี้ - คุณจะต้องเลิกทำก่อนวัย
user3728501

1
สิ่งนี้ยังคงเสี่ยงต่อการทำตามคำแนะนำในเดือนสิงหาคม (หรือธันวาคม) 2017 หรือไม่ ไม่ชัดเจนอีกต่อไปหลังจาก @cas แก้ไขและแสดงความคิดเห็นของเขา มีคนติดตามหรือไม่
Brian Peterson

154

คุณสามารถติดตั้งPython-3.6บน Debian 8 ดังต่อไปนี้:

wget https://www.python.org/ftp/python/3.6.9/Python-3.6.9.tgz
tar xvf Python-3.6.9.tgz
cd Python-3.6.9
./configure --enable-optimizations --enable-shared
make -j8
sudo make altinstall
python3.6

ก็จะแนะนำให้ใช้make altinstallตามที่เว็บไซต์อย่างเป็นทางการ

หากคุณต้องการpipที่จะรวมคุณจะต้องเพิ่ม--with-ensurepip=installการกำหนดค่าการโทรของคุณ ./configure --helpดูรายละเอียดเพิ่มเติม

คำเตือน: make installสามารถเขียนทับหรือปลอมตัวไบนารีหลาม make altinstallดังนั้นจึงขอแนะนำแทนเพราะมันเพียงติดตั้งmake installexec_prefix/bin/pythonversion

บางแพคเกจจะต้องติดตั้งเพื่อหลีกเลี่ยงปัญหาที่ทราบบางอย่างดู: ปัญหาการสร้างทั่วไป (อัพเดท)

อูบุนตู / Debian:

sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev \
libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev \
xz-utils tk-dev libffi-dev liblzma-dev

ทางเลือกของ libreadline-dev:

sudo apt install libedit-dev

Fedora / CentOS / RHEL (aws ec2):

sudo yum install zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel \
openssl-devel xz xz-devel libffi-devel

ทางเลือกของ openssl-devel:

sudo yum install compat-openssl10-devel --allowerasing

ปรับปรุง

คุณสามารถดาวน์โหลดรุ่นล่าสุดpython-x.y.z.tar.gzจากที่นี่

ในการตั้งค่าเวอร์ชันหลามเริ่มต้นและสลับไปมาระหว่างกันได้อย่างง่ายดายคุณต้องอัปเดตupdate-alternativesด้วยเวอร์ชันหลามหลาย ๆ ตัว

สมมติว่าคุณได้ติดตั้งpython3.7บนยืดเดเบียนใช้คำสั่งwhereis pythonเพื่อค้นหาไบนารี ( */bin/python) เช่น:

/usr/local/bin/python3.7
/usr/bin/python2.7
/usr/bin/python3.5

เพิ่มเวอร์ชันของ python:

update-alternatives --install /usr/bin/python python /usr/local/bin/python3.7 50
update-alternatives --install /usr/bin/python python /usr/bin/python2.7 40
update-alternatives --install /usr/bin/python python /usr/bin/python3.5 30

python3.7กับ50ลำดับความสำคัญคือตอนนี้หลามเริ่มต้นของคุณpython -Vพิมพ์ประสงค์:

Python 3.7.0b2

ในการสลับไปมาระหว่างกันให้ใช้:

update-alternatives --config python

ตัวอย่างผลลัพธ์:

There are 3 choices for the alternative python (providing /usr/bin/python).

  Selection    Path                      Priority   Status
------------------------------------------------------------
* 0            /usr/local/bin/python3.7   50        auto mode
  1            /usr/bin/python2.7         40        manual mode
  2            /usr/bin/python3.5         30        manual mode
  3            /usr/local/bin/python3.7   50        manual mode

Press <enter> to keep the current choice[*], or type selection number: 

5
พวกเดเบียนไม่แนะนำcheckinstallใช่ไหม? มิฉะนั้นมันจะฉลาดที่จะติดตั้งไปยังหรือ/usr/local /opt
Ivan Anishchuk

3
ตาม./configure --helpPython 3.6 จะทำการติดตั้ง/usr/localตามค่าเริ่มต้น
Markus Strauss

2
มีปัญหากับคำตอบนี้ (เช่นไม่มีโมดูล SSL หรือไม่มี zlib)? ดู: stackoverflow.com/a/41601137/972128
kkurian

11
ข้อจำกัดความรับผิดชอบ: ใช้เวลา20+ ชั่วโมงสำหรับอุปกรณ์ที่มีพลังงานต่ำเช่น Pi zero
แอนทอนLizée

2
รุ่น3.7คือออก
Timo

32

คำแนะนำอย่างเป็นทางการคือ "คุณไม่ต้องการซอฟต์แวร์ที่ใหม่กว่า"

อย่าทนทุกข์ทรมานจาก Shiny New Stuff Syndrome - DontBreakDebian | Debian Wiki

คำแนะนำส่วนใหญ่ในหน้านั้นมุ่งเน้นไปที่สิ่งที่ต้องทำหากคุณต้องการให้ซอฟต์แวร์ใช้งานได้ทั่วทั้งระบบ แต่ฉันไม่คิดว่าจำเป็นในกรณีนี้

หากคุณดึงข้อมูลแหล่งไพ ธ อนให้สร้างตัวแปล 3.6 ที่ใช้--prefixเพื่อควบคุมตำแหน่งที่มันจะสิ้นสุดลงจากนั้นใช้virtualenvกับ--pythonตัวเลือกจากนั้นคุณสามารถใช้ไพ ธ อน 3.6 ได้โดยไม่กระทบกับสิ่งใดนอกโครงการของคุณ

กระบวนการอาจเป็นดังนี้:

$ cd ~
$ mkdir pythonroot
$ mkdir opt
$ mkdir app
$ cd opt
$ wget <python tarball>
$ tar -xvf <python tarball>
$ cd python-3.6
$ ./configure --prefix="$HOME"/pythonroot
$ make
$ make install
$ cd ~
$ cd app
$ virtualenv venv --python ~/pythonroot/bin/python
$ . venv/bin/activate
[venv]$ which python
/home/<user>/pythonroot/bin/python

หากคุณกำลังจะทำสิ่งนี้คุณอาจต้องการพิจารณาการ--enable-optimizationsตั้งค่าสถานะในconfigureสคริปต์Python ซึ่งดูเหมือนว่าจะเปิดใช้งานคุณลักษณะบางอย่างเช่นการปรับให้เหมาะสมที่แนะนำด้วยโปรไฟล์ มันเพิ่มเวลาสร้าง แต่ดูเหมือนว่าจะส่งผลให้ล่ามเร็วขึ้น 10% หรือมากกว่านั้นตามเกณฑ์มาตรฐานบางอย่าง


5
สิ่งนี้เป็นไปตามกฎ Python ทั่วไปของ "Practicality beats purity" ฉันมักจะติดตั้ง pythons จากแพ็คเกจซอร์สใน / opt / python-xyz แล้วเรียกใช้แอปพลิเคชันจาก virtualenv ของตัวเอง
zgoda

1
หมายเหตุสำคัญ: หากคุณกำลังจะทำสิ่งนี้: ตรวจสอบให้แน่ใจว่าสิ่งที่ผู้ใช้กระบวนการ Python ของคุณทำงานเป็นไม่สามารถแก้ไข virtualenv
Gregory Nisbet

1
ในความเห็นของฉันนี่เป็นคำตอบที่ดีที่สุด
BringBackCommodore64

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

ในการติดตั้งของฉัน[venv]$ which pythonไม่ได้ให้ฉัน/home/<user>/pythonroot/bin/pythonแต่/home/<user>/app/venv/bin/python3แทนที่จะ ... ทำไม?
แช่แข็ง

12

คุณอาจต้องการที่จะมีลักษณะที่pyenv: https://github.com/yyuu/pyenv หากต้องการอ้างอิงจากpyenvบทช่วยสอนที่ Amaral Lab:

ก่อนหน้านี้รู้จักกันในชื่อ Pythonbrew, pyenv ให้คุณเปลี่ยนเวอร์ชัน Python ทั่วโลก, ติดตั้ง Python หลายรุ่น, ตั้งค่าไดเรกทอรี (โครงการ) - เฉพาะรุ่น Python, และใช่สร้าง / จัดการสภาพแวดล้อม Python เสมือน ("virtualenvs") ทั้งหมดนี้ทำบนเครื่องสไตล์ * NIX (Linux และ OS X) โดยไม่ขึ้นกับ Python และทำงานได้ในระดับผู้ใช้ - ไม่จำเป็นต้องใช้คำสั่ง sudo ใด ๆ


3
แม้ว่าลิงก์นี้อาจตอบคำถามได้ดีกว่าหากรวมส่วนสำคัญของคำตอบไว้ที่นี่และให้ลิงก์สำหรับการอ้างอิง คำตอบสำหรับลิงก์เท่านั้นอาจไม่ถูกต้องหากหน้าเว็บที่เชื่อมโยงมีการเปลี่ยนแปลง - จากการรีวิว
Archemar

คุณพูดถูกจะเปลี่ยนคำตอบ
schaiba

1
ฉันคิดว่าเขาหมายรวมถึงบรรทัดคำสั่งที่จำเป็นด้วย ...
not2qubit

วิธีนี้ใช้งานได้ดียกเว้นเมื่อคุณจัดการกับอุปกรณ์ฝังตัว ในการ "ติดตั้ง" เวอร์ชันของไพ ธ อนแหล่งที่มาจะถูกดาวน์โหลดและรวบรวมไว้ในเครื่อง นอกเหนือจากนั้น pyenv เป็นตัวเลือกที่ยอดเยี่ยมและมีความยืดหยุ่นมากมายรวมถึงการใช้งาน python เวอร์ชั่นต่าง ๆ ในไดเรกทอรีต่าง ๆ และจัดการกับปัญหา PIP ที่น่ารำคาญมาก
Brian Bulkowski

11

วิธีที่ฉันชอบคือใช้AnacondaหรือMinicondaเพื่อเก็บ python เวอร์ชันล่าสุดและแพ็คเกจที่ติดตั้งบน Debian

มันถูกเก็บไว้อย่างเรียบร้อยในโฟลเดอร์ซึ่งทำให้ง่ายต่อการลบในภายหลังหากคุณต้องการ โปรแกรมติดตั้งยังเพิ่มพา ธ ไปยัง bashrc ของคุณ (เพิ่มด้วยตัวคุณเองถ้าคุณใช้เชลล์อื่น)

มันมาพร้อมกับ pip และ conda ซึ่งเป็นตัวจัดการแพคเกจอื่นที่ดีสำหรับ pacakges ที่ซับซ้อนมากขึ้นเช่น numpy Miniconda เป็นการติดตั้งแบบเปลือยเปล่าและ Anaconda เป็นการติดตั้งแบบเต็มรูปแบบด้วยแพ็คเกจจำนวนมากซึ่งออกแบบมาสำหรับการวิเคราะห์ข้อมูลเป็นหลัก

อย่างรวดเร็ว:

wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh

อ่านและยอมรับใบอนุญาตหากคุณไม่ได้ใช้เส้นทางเพิ่ม bash: export PATH="/home/$USER/miniconda3/bin:$PATH"

ทดสอบ:

$ python --version
Python 3.6.0 :: Continuum Analytics, Inc.

ติดตั้งจาก PyPi:

# pip install fava

ติดตั้งจาก conda:

# conda install numpy

เมื่อคุณต้องการลบให้ลบโฟลเดอร์~/miniconda3และเส้นทางใน bashrc ของคุณ


หลังจากปัญหาที่ไม่รู้จบกับการติดตั้งหลามจากแหล่งที่มารุ่นนี้ทำงานได้อย่างสมบูรณ์แบบ! โปรดทราบว่าถ้าคุณต้องการที่จะทำงานร่วมกับ virtualenv (เสื้อคลุม) สำหรับการจัดการสภาพแวดล้อมที่คุณต้องเพิ่ม direcotry ห้องสมุด miniconda LD_LIBRARY_PATHไป เช่นเพิ่มของคุณexport $LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$HOME/miniconda3/lib" .bashrc
คมชัด

"ตัวติดตั้งยังเพิ่มเส้นทางไปยัง bashrc ของคุณด้วย" นั่นเป็นเหตุผลหลักว่าทำไมฉันจึงไม่ใช้อนาคอนดา การปิดบังสภาพแวดล้อมของงูหลามที่มีอยู่แล้วนั้นไม่ดีต่อสุขภาพ
MisterMiyagi

3

Debian ไม่มี Python 3.6 ในที่เก็บของ นี่คือภาพรวมของสถานะ Python3 ปัจจุบัน:

wheezy (oldstable) (python): interactive high-level object-oriented language (default python3 version)
    3.2.3-6: all
jessie (stable) (python): interactive high-level object-oriented language (default python3 version)
    3.4.2-2: amd64 arm64 armel armhf i386 mips mipsel powerpc ppc64el s390x
stretch (testing) (python): interactive high-level object-oriented language (default python3 version)
    3.5.1-4: amd64 arm64 armel armhf i386 mips mips64el mipsel ppc64el s390x
sid (unstable) (python): interactive high-level object-oriented language (default python3 version)
    3.5.1-4: alpha amd64 arm64 armel armhf hppa hurd-i386 i386 kfreebsd-amd64 kfreebsd-i386 m68k mips mips64el mipsel powerpc powerpcspe ppc64 ppc64el s390x sh4 sparc64 x32

คุณสามารถตรวจสอบเหล่านี้ออกจากที่นี่

คุณสามารถติดตั้ง 3.6 ทั้งจากแหล่งที่มาหรือใช้บางอย่างเช่น Linuxbrew สำหรับการติดตั้งโฮมไดเรกทอรี


3

ด้วยสิ่งนี้

sudo echo "http://ftp.fr.debian.org/debian testing main" >> /etc/apt/sources.list

sudo apt-get update
sudo apt-get install -y python3.6

ทำงานสำเร็จ

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

sudo alias python=/usr/bin/python3.6

ตอนนี้

python --version
Python 3.6

ควรอ่านsudo echo "deb http://ftp.fr.debian.org/debian testing main" >> /etc/apt/sources.list
เสื่อมค่า

3
คำตอบนี้เหมือนกับคำตอบที่ยอมรับมาในอีกหนึ่งปีต่อมาและยังล้มเหลวในการให้คำสั่งที่ถูกต้อง
ถึง마 SE

1

Python 3.6 (แต่rc1) เพิ่งมาถึง Debian Experiment ฉันสามารถสร้างสิ่งนี้ได้สำเร็จบน Debian stable (jessie) ดูขั้นตอนสุดท้ายของการสร้างที่วางด้านล่าง

อย่างไรก็ตามนั่นไม่ได้หมายความว่ามันจะติดตั้งสำเร็จและไม่ทำให้เกิดปัญหา ขั้นตอนต่อไปที่สมเหตุสมผลคือการทดสอบบน VM การทดสอบที่เสถียร ถ้าใครสนใจฉันจะลองดู - หรือคนอื่นก็ลอง

รุ่นวางจำหน่ายที่เหมาะสมควรมาถึง Debian ในไม่ช้า

dh_builddeb -a
dpkg-deb: building package `python3.6' in `../python3.6_3.6.0~rc1-1_amd64.deb'.
dpkg-deb: building package `python3.6-venv' in `../python3.6-venv_3.6.0~rc1-1_amd64.deb'.
dpkg-deb: building package `libpython3.6-stdlib' in `../libpython3.6-stdlib_3.6.0~rc1-1_amd64.deb'.
dpkg-deb: building package `python3.6-minimal' in `../python3.6-minimal_3.6.0~rc1-1_amd64.deb'.
dpkg-deb: building package `libpython3.6-minimal' in `../libpython3.6-minimal_3.6.0~rc1-1_amd64.deb'.
dpkg-deb: building package `libpython3.6' in `../libpython3.6_3.6.0~rc1-1_amd64.deb'.
dpkg-deb: building package `python3.6-dev' in `../python3.6-dev_3.6.0~rc1-1_amd64.deb'.
dpkg-deb: building package `libpython3.6-dev' in `../libpython3.6-dev_3.6.0~rc1-1_amd64.deb'.
dpkg-deb: building package `python3.6-dbg' in `../python3.6-dbg_3.6.0~rc1-1_amd64.deb'.
dpkg-deb: building package `libpython3.6-dbg' in `../libpython3.6-dbg_3.6.0~rc1-1_amd64.deb'.
 dpkg-genchanges  >../python3.6_3.6.0~rc1-1_amd64.changes
dpkg-genchanges: including full source code in upload
 dpkg-source --after-build python3.6-3.6.0~rc1
dpkg-buildpackage: full upload (original source is included)
Now running lintian...
W: python3.6 source: newer-standards-version 3.9.8 (current is 3.9.6)
N: 56 tags overridden (26 errors, 27 warnings, 3 info)
Finished running lintian.
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.