ฉันจะติดตั้ง Python 2.7.X หรือ 3.X ล่าสุดบน Ubuntu ได้อย่างไร


183

ฉันต้องการที่จะติดตั้ง tarball หลามล่าสุดเกี่ยวกับอูบุนตูดาวน์โหลดได้จากhttp://python.org/download/

นี่เป็นวิธีที่ถูกต้องในการติดตั้งหรือไม่

./configure
make
make install

ถ้าไม่ฉันจะทำอย่างไร


1
ในครั้งเดียวฉันคิดว่านี่ถูกถามเพื่อติดตั้งpython เวอร์ชันใหม่บน Ubuntu ตอนนี้มันจำเป็นต้องติดตั้ง python เวอร์ชันเก่าบน Ubuntu (เพราะเรายังต้องการ python 2.7 สำหรับหลาย ๆ อย่าง) ... tl; dr: คำตอบนี้ไม่ได้เป็นปัจจุบัน / ถูกต้องอีกต่อไป แต่สมมติว่ามีการติดตั้ง python3 เป็นค่าเริ่มต้น (และอาจเป็น python2.x ขั้นต่ำ) จากนั้นให้เรียกใช้:sudo apt-get install python-2.7 python-pip
michael

@michael_n คุณกำลังพูดถึงอะไร? การรวบรวมจากแหล่งที่มาไม่ได้ทำให้คำตอบนี้ไม่ถูกต้องหรือล้าสมัย มันเป็นวิธีการที่แตกต่าง คุณสามารถใช้ apt เพื่อทำกระบวนการให้คุณโดยอัตโนมัติหากจำเป็น

คุณใช้สิ่งที่คุณต้องการ ฉันไม่เห็นว่าสิ่งนี้สนับสนุนข้อเรียกร้องของคุณว่าสิ่งนี้ล้าสมัยอย่างไร อย่างที่คุณพูดว่าตัวเองคุณใช้มันเมื่อคุณต้องการเพราะมันอาจไม่สามารถใช้ได้ ตัวอย่างเช่นระบบย่อยของ windows สำหรับ linux ใช้แพคเกจซอฟต์แวร์ที่ล้าสมัยบางครั้งแม้กระทั่ง distro คือ ubuntu 16.04.1 (เบต้า) และใช้ python2.6.2 และ python3 แม้ปัจจุบันจะเป็น python2.7.12 ในกรณีที่ฉันควรรวบรวมถ้าฉันต้องการแพคเกจที่ทันสมัย

1
@jargonjunkie คุณอยู่นอกหัวข้อ แต่ถูกต้อง ถ้าคำถามคือ"ฉันจะติดตั้งหลาม 2.7 บน Ubuntu 16.04+"ซึ่งมันเป็น (ตั้งแต่ 16.04 อยู่ในขณะนี้ซึ่งเป็นจุดของฉัน) sudo apt-get install python2.7แล้วคุณก็ นี่ไม่ใช่แค่ง่ายขึ้นมันเป็นคำตอบที่ถูกต้องเท่านั้นเนื่องจากเป็นวิธีเดียวที่คุณจะสามารถจัดการกับการติดตั้งโมดูล python ผ่าน apt-get และการพึ่งพาของพวกเขา
ไมเคิล

หวังว่าสิ่งนี้จะช่วยอธิบาย (เพิ่มคำตอบ) ระบบนิเวศของงูหลามนั้นมีความพิเศษอย่างมากและคุณสามารถเข้าสู่ "dependency hell" ได้อย่างง่ายดายหากคุณไม่สร้างสภาพแวดล้อมของงูหลามอย่างระมัดระวัง Askubuntu.com/a/831075/17060
michael

คำตอบ:


199

ก่อนอื่นให้ทำการติดตั้งบางส่วน:

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

จากนั้นดาวน์โหลดโดยใช้คำสั่งต่อไปนี้:

version=2.7.13
cd ~/Downloads/
wget https://www.python.org/ftp/python/$version/Python-$version.tgz

แตกไฟล์และไปที่ไดเรกทอรี:

tar -xvf Python-$version.tgz
cd Python-$version

ตอนนี้ติดตั้งโดยใช้คำสั่งที่คุณเพิ่งลองใช้checkinstallแทนเพื่อให้ถอนการติดตั้งได้ง่ายขึ้นถ้าต้องการ:

./configure
make
sudo checkinstall

เปลี่ยนversionเป็นเวอร์ชันที่คุณต้องการ ( version=2.7.1หรือversion=3.6.0ตัวอย่าง)


20
ใช้sudo make installและไม่altinstallตั้งเป็นรุ่นเริ่มต้นของไพ
ธ อน

ใช้CXX=g++ ./configureหาก ./configure มีคำเตือนว่าไม่พบ g ++
srj

2
หลังจากติดตั้งตามคำแนะนำข้างต้นฉันจะรันคำสั่งใดในคอนโซลเพื่อตรวจสอบว่ามีการติดตั้งจริงหรือไม่
J86

9
มันค่อนข้างพิเศษที่คำตอบที่ดีที่สุดสำหรับคำถามง่ายๆ "วิธีติดตั้ง Python" จะมีคำเตือนที่แย่มากเช่น "นี่เป็นวิธีที่ดีที่สุดที่เรารู้จักในการติดตั้ง Python และอาจทำลายระบบของคุณได้เป็นอย่างดี" ... น่าแปลกใจมากที่เว็บไซต์ไพ ธ อนอย่างเป็นทางการมีการดาวน์โหลดจำนวนมากและไม่ได้มีคำแนะนำในการติดตั้งเพียงหน้าเดียว
2560

4
pat - คำตอบที่ดีที่สุดสำหรับคำถามง่ายๆ "วิธีการติดตั้งไพ ธ อน" คือsudo apt-get install pythonคำตอบที่ซับซ้อนมากขึ้นคือ "วิธีการติดตั้งไพ ธ อนล่าสุด " ความหมายของ "มาจากแหล่งที่มา" คุณจะมีปัญหาเดียวกันในระบบปฏิบัติการใด ๆ เว้นแต่ว่าคุณกำลังติดตั้งไบนารีที่คอมไพล์แล้วจากบุคคลที่สามซึ่งอีกครั้งนั้นมีความเสี่ยงต่อระบบปฏิบัติการใด ๆ นอกจากนี้คำตอบนี้มาจาก 2012; สำหรับคำแนะนำล่าสุดโปรดดูaskubuntu.com/questions/101591/…
michael

181

เว้นแต่ว่าคุณจะมีความปรารถนาที่จะรวบรวมมันด้วยตัวคุณเองวิธีที่ต้องการคือการใช้DeadSnakes PPAเพื่อติดตั้ง Python เวอร์ชันที่ไม่รวมอยู่ในค่าเริ่มต้น:

sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt-get update
sudo apt-get install python2.7

นอกจากนี้ยังมีรุ่นอื่น ๆ เช่นpython2.4หรือpython3.6เป็นต้น


13
หมายเหตุของโปรแกรม: หากคุณใช้ 10.04 คุณอาจต้องติดตั้ง python-software-properties ก่อนที่จะใช้ add-apt-repository
Craig Maloney

3
ขอแนะนำให้สร้างไพ ธ อนในสภาพแวดล้อมท้องถิ่นของคุณแทนที่จะติดตั้งจากไบนารีที่สร้างไว้ล่วงหน้า
pylover

16
+1 :)really have a burning desire to compile it yourself
วัตต์

5
พลาดที่จะพูดถึงว่า: 1. ยังppaไม่ได้รับการรับรองอย่างเป็นทางการดังนั้นวิธีที่ปลอดภัยที่สุดคือการสร้างจากแหล่งที่มา 2. สิ่งนี้จะส่งผลให้เป็นไพ ธ อนระดับโลกซึ่งผู้ที่ไม่sudoสามารถแก้ไขหรือติดตั้งแพ็คเกจได้ 3. งูเหลือมหลายตัวสามารถติดตั้งได้ในพื้นที่ที่ต่างกันโดยการสร้างจากแหล่งที่มา
Ioannis Filippidis

2
apt-get install python2.7นี่เป็นการติดตั้งไบนารี python2.7 แทนที่จะเป็นไพ ธ อน ... น่าเกลียด !!
Dhawal

26

ดำเนินการต่อเพื่อจัดทำเอกสารนี้สำหรับ Ubuntu รุ่นล่าสุด1 : สำหรับเซิร์ฟเวอร์ Ubuntu 16.04.1 ค่าเริ่มต้น Python คือรุ่น 3.5 และ Python 2.7 ไม่ได้รับการติดตั้งตามค่าเริ่มต้น ในการติดตั้งใหม่ (โปรดทราบว่าไม่มีแม้แต่pythonไฟล์ที่รันได้):

$ type python3 python2 python 
python3 is /usr/bin/python3
-bash: type: python2: not found
-bash: type: python: not found

$ python3 --version 
Python 3.5.2

$ python --version 
The program 'python' can be found in the following packages:
 * python-minimal
 * python3
Try: sudo apt install <selected package>

หมายเหตุ: ก่อนที่จะดำเนินการต่อคุณอาจจะต้องการที่จะทำอย่างรวดเร็วsudo apt-get update, sudo apt-get upgradeและsudo apt-get dist-upgrade(โปรดทราบว่าสิ่งที่คำสั่งเหล่านี้ในความเป็นจริงทำอะไรฉันสมมติว่าการติดตั้งใหม่ที่นี่.)

การติดตั้ง python 2.7 นั้นง่ายเหมือน:

$ sudo apt-get install python2.7

เอาต์พุตเริ่มต้นของการติดตั้ง python 2.7 มีดังนี้:

$ sudo apt-get install python2.7
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
  libpython2.7-minimal libpython2.7-stdlib python2.7-minimal
Suggested packages:
  python2.7-doc binutils binfmt-support
The following NEW packages will be installed:
  libpython2.7-minimal libpython2.7-stdlib python2.7 python2.7-minimal
0 upgraded, 4 newly installed, 0 to remove and 0 not upgraded.
Need to get 3,735 kB of archives.
After this operation, 15.8 MB of additional disk space will be used.
Do you want to continue? [Y/n] Y
...etc, etc...

หลังจากติดตั้ง python 2.7 แล้ว

$ type python3 python2.7 python3.5 python2 python
python3 is /usr/bin/python3
python2.7 is /usr/bin/python2.7
python3.5 is /usr/bin/python3.5
bash: type: python2: not found
bash: type: python: not found

แต่ยังคงมีปัญหาอยู่เนื่องจากคุณยังไม่สามารถติดตั้งโมดูล PyPI ผ่านpip- เช่นหากคุณต้องการโน๊ตบุ๊ค jupyter หรือ scipy หรือ numpy (ฯลฯ ) ล่าสุดคุณจะต้องติดตั้งpipแล้วต่อจากpip installนั้นและยังคงเปลี่ยนเป็นapt-getเพื่อติดตั้งการพึ่งพาระบบใด ๆ ที่จำเป็นเช่น graphviz หรือไลบรารีระบบหลัก

$ type pip3 pip2 pip
bash: type: pip3: not found
bash: type: pip2: not found
bash: type: pip: not found

$ python3 -m pip --version 
/usr/bin/python3: No module named pip

ดังนั้นเพื่อติดตั้ง pip อีกครั้งมันง่ายเหมือนsudo apt-get install python-pip:

$ sudo apt-cache search -n pip | egrep '^python[0-9]*-pip'
python-pip - alternative Python package installer
python-pip-whl - alternative Python package installer
python3-pip - alternative Python package installer - Python 3 version of the package

คุณจะต้องทั้งpython-pipสำหรับ Python 2.7 pipและpython3-pipสำหรับหลาม pip3 การติดตั้งผ่านapt-getแน่ใจว่าจะติดตั้งการอ้างอิงที่จำเป็น; เช่นนี่คือผลลัพธ์สำหรับการติดตั้ง pip2:

$ sudo apt-get install python-pip
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
  binutils build-essential dpkg-dev fakeroot g++ g++-5 gcc gcc-5 libalgorithm-diff-perl
  libalgorithm-diff-xs-perl libalgorithm-merge-perl libasan2 libatomic1 libc-dev-bin libc6-dev
  libcc1-0 libcilkrts5 libdpkg-perl libexpat1-dev libfakeroot libfile-fcntllock-perl libgcc-5-dev
  libgomp1 libitm1 liblsan0 libmpx0 libpython-all-dev libpython-dev libpython-stdlib libpython2.7
  libpython2.7-dev libquadmath0 libstdc++-5-dev libtsan0 libubsan0 linux-libc-dev make
  manpages-dev python python-all python-all-dev python-dev python-minimal python-pip-whl
  python-pkg-resources python-setuptools python-wheel python2.7-dev
Suggested packages:
  binutils-doc debian-keyring g++-multilib g++-5-multilib gcc-5-doc libstdc++6-5-dbg gcc-multilib
  autoconf automake libtool flex bison gdb gcc-doc gcc-5-multilib gcc-5-locales libgcc1-dbg
  libgomp1-dbg libitm1-dbg libatomic1-dbg libasan2-dbg liblsan0-dbg libtsan0-dbg libubsan0-dbg
  libcilkrts5-dbg libmpx0-dbg libquadmath0-dbg glibc-doc libstdc++-5-doc make-doc python-doc
  python-tk python-setuptools-doc
The following NEW packages will be installed:
  binutils build-essential dpkg-dev fakeroot g++ g++-5 gcc gcc-5 libalgorithm-diff-perl
  libalgorithm-diff-xs-perl libalgorithm-merge-perl libasan2 libatomic1 libc-dev-bin libc6-dev
  libcc1-0 libcilkrts5 libdpkg-perl libexpat1-dev libfakeroot libfile-fcntllock-perl libgcc-5-dev
  libgomp1 libitm1 liblsan0 libmpx0 libpython-all-dev libpython-dev libpython-stdlib libpython2.7
  libpython2.7-dev libquadmath0 libstdc++-5-dev libtsan0 libubsan0 linux-libc-dev make
  manpages-dev python python-all python-all-dev python-dev python-minimal python-pip
  python-pip-whl python-pkg-resources python-setuptools python-wheel python2.7-dev
0 upgraded, 49 newly installed, 0 to remove and 0 not upgraded.
Need to get 61.1 MB of archives.
After this operation, 169 MB of additional disk space will be used.
Do you want to continue? [Y/n] Y
...etc...

สิ่งที่น่าสนใจเกิดขึ้นจากสิ่งนี้: ตอนนี้คุณมี "มาตรฐาน" (และแนะนำ PEP) python2และpython3(ซึ่งเป็นเพียง symlink ของ python 2.7 และ python 3.5):

$ type python3 python2 python python2.7 python3.5 
python3 is /usr/bin/python3
python2 is /usr/bin/python2
python is /usr/bin/python
python2.7 is /usr/bin/python2.7
python3.5 is /usr/bin/python3.5

คุณจะต้องsudo apt-get install python3-pip; ก่อนที่คุณจะติดตั้งคุณมี:

$ type pip pip2 pip3
pip is /usr/bin/pip
pip2 is /usr/bin/pip2
-bash: type: pip3: not found

$ python2 -m pip --version 
pip 8.1.1 from /usr/lib/python2.7/dist-packages (python 2.7)

$ python3 -m pip --version 
/usr/bin/python3: No module named pip

หลังจากติดตั้งpip3แล้ว

$ sudo apt-get install python3-pip
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
  libpython3-dev libpython3.5-dev python3-dev python3-setuptools python3-wheel python3.5-dev
Suggested packages:
  python-setuptools-doc
The following NEW packages will be installed:
  libpython3-dev libpython3.5-dev python3-dev python3-pip python3-setuptools python3-wheel python3.5-dev
0 upgraded, 7 newly installed, 0 to remove and 0 not upgraded.
Need to get 38.0 MB of archives.
After this operation, 55.2 MB of additional disk space will be used.
Do you want to continue? [Y/n] 
...etc...

รุ่นผลลัพธ์:

$ type python python2 python3 pip pip2 pip3
python is /usr/bin/python
python2 is hashed (/usr/bin/python2)
python3 is hashed (/usr/bin/python3)
pip is /usr/bin/pip
pip2 is /usr/bin/pip2
pip3 is /usr/bin/pip3

$ pip --version 
pip 8.1.1 from /usr/lib/python2.7/dist-packages (python 2.7)

$ pip3 --version 
pip 8.1.1 from /usr/lib/python3/dist-packages (python 3.5)

$ python2 -m pip --version 
pip 8.1.1 from /usr/lib/python2.7/dist-packages (python 2.7)

$ python3 -m pip --version 
pip 8.1.1 from /usr/lib/python3/dist-packages (python 3.5)

และสิ่งสุดท้ายก่อนที่คุณจะไปและเริ่มการติดตั้งโมดูลหลาม PyPI ที่คุณชื่นชอบ: คุณอาจจะต้องอัพเกรด pip เอง (ทั้ง pip2 และ pip3 แยกกันด้วยเช่นกันมันไม่สำคัญว่าpipจะถูกเรียกใช้ผ่านทางpythonexecutables หรือpipexecutables, อัพเกรดจริงจะถูกเก็บไว้ใน/usr/lib):

$ sudo -H python2 -m pip install --upgrade pip
...
$ sudo -H python3 -m pip install --upgrade pip
...

ตอนนี้คุณสามารถเรียกใช้งานแบบสแตนด์อะโลนpipหรือรุ่นที่รวมอยู่ภายในpython(ผ่านpython -m pip {command})


[1] สรุปทางประวัติศาสตร์: Ubuntu รุ่นเก่ามีเพียง Python 2.6 เท่านั้นดังนั้นวิธีการต่าง ๆ ทั้งหมดในการติดตั้ง Python 2.7+ ต่อมาหลังจากเพิ่ม Python 2.7 ไปยังที่เก็บข้อมูลสาธารณะเรายังคงมีความท้าทายเหมือนกันในการติดตั้ง Python 2.7 ใหม่ล่าสุดพร้อมกับการแก้ไขล่าสุดซึ่งจำเป็น (บ่อยเกินไป) เช่นกัน สถานการณ์ในวันนี้ดีขึ้น / เรียบง่ายมากขึ้น: Python 2.7 และ 3.5 ปัจจุบัน (โดยทั่วไปเป็นเพียงแพลตฟอร์ม Python สองรุ่นเท่านั้นที่ผู้คนใส่ใจ) ซึ่งตอนนี้อยู่ใน repos สาธารณะมีเสถียรภาพมากดังนั้นตอนนี้เราแค่กังวลเกี่ยวกับการติดตั้งล่าสุด หลามโมดูลไม่ล่าสุดหลาม ดังนั้นตอนนี้ Python "ปัญหาเกี่ยวกับเวอร์ชั่นล่าสุด" ได้ย้ายบางส่วนออกจาก repos ของระบบปฏิบัติการ & aptและไปยัง PyPI & pip.)


2
ทำตามคำแนะนำนี้บน Ubuntu 16.04.1 LTS ประสบความสำเร็จในการติดตั้ง python 2.7 และ pip ​​เช่นนี้: sudo apt-get install python2.7; sudo apt-get install python-pip; sudo -H python2 -m pip install - อัพเกรด pip; # การตรวจสอบเวอร์ชั่น: $ pip --version -> pip 9.0.1 จาก /usr/local/lib/python2.7/dist-packages (python 2.7); $ python --version -> Python 2.7.12
Robert Lujo

ให้อภัยความไม่รู้ของฉัน แต่ฉันอาจจะรู้ว่า "แฮช" หมายถึงอะไรเมื่อแสดงรุ่นหลาม?
นักวิทยาศาสตร์ล้มเหลว

1
@TalhaIrfan มันเป็นคำถามที่ดี (และถ้าคุณจะช่วยให้คำตอบแบบง่าย): เมื่อมีคำสั่งถูกพิมพ์ลงในทุบตี (เป็นหอย / ที่สุด W) cmd $PATHอาจจะนามแฝงฟังก์ชั่นหรือแฟ้มที่ปฏิบัติการที่พบใน env var PATHเป็นรายการไดเรกทอรีที่ยาวและมีไฟล์หลายพันตัวในนั้น เพื่อเพิ่มความเร็วในการค้นหาไฟล์เรียกทำงานเชลล์ใช้ hashtable ที่แคชเพื่อค้นหาอย่างรวดเร็ว มันอาจกลายเป็นเก่าดังนั้น "hashed" ช่วยให้คุณรู้ว่ามันเป็น "จดจำ" คำสั่งนี้แมปไปยังไฟล์ปฏิบัติการที่unix.stackexchange.com/questions/5609/…
michael

@michael ขอบคุณมาก! เป็นคำตอบที่มีประโยชน์จริง ๆ : โดยย่อและตรงประเด็น!
นักวิทยาศาสตร์ที่ล้มเหลว

1
@gaia คุณอาจต้องการถามคำถามแยกต่างหากเนื่องจากอาจจำเป็นต้องย้อนกลับไปหามากขึ้น (หรือหากมีสิ่งใดเปลี่ยนแปลงไปนับตั้งแต่ที่ฉันเขียนบทความนี้ขึ้นมา) บางทีก่อนอื่นให้ตรวจสอบว่าทั้งสอง pip (2.7) & pip3(3.x) ได้รับการติดตั้ง / อัพเกรดอย่างสมบูรณ์และไม่ใช่แค่ในอดีต - เช่นsudo apt-get install python-pip python3-pipและsudo -H python2 -m pip install --upgrade pipและsudo -H python3 -m pip install --upgrade pip ... หรือถ้ามันเป็นปัญหาสิทธิ์จริง ๆ (ระบุโดย "มันใช้งานได้กับ sudo ") จากนั้นจะเป็นเรื่องยากมากที่จะติดตาม
ไมเคิล

11

12.04

หากคุณกำลังต่อไปนี้คำตอบ Achu ของแล้วคำว่าควรจะเปลี่ยนเป็นlibread5-dev libreadline-gplv2-devดังนั้นคำสั่งเต็มจะเป็น:

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

4

คุณยังสามารถดาวน์โหลดและติดตั้งผ่านpyenv

#Install Pyenv
git clone https://github.com/pyenv/pyenv.git ~/.pyenv
export PATH=~/.pyenv/bin:/usr/local/hadoop/bin/:$PATH
echo 'export PYENV_ROOT="~/.pyenv"' >> ~/.bash_profile
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(pyenv init -)"' >> ~/.bash_profile

#Install Python
pyenv install 2.7.8
pyenv global 2.7.8

pyenv install 3.4.5
pyenv global 3.4.5

นี่เป็นวิธีที่สะอาดที่สุดในการรับ Python เวอร์ชันล่าสุดบน Ubuntu เวอร์ชันเก่ากว่า มันรวมถึงการสนับสนุน virtualenv เช่นกันผ่านทางpyenv-virtualenvปลั๊กอินทำให้ง่ายต่อการติดตั้งแอปพลิเคชันที่มีความต้องการโมดูลที่แตกต่างกันโดยไม่มีการปะทะกัน
RichVel

2
คำเตือนสองข้อเกี่ยวกับ pyenv: (1) มันทำงานได้จาก bash shell เท่านั้น (หรืออาจ zsh แต่แน่นอนว่าไม่ใช่ dash ที่เป็น / bin / sh บน Ubuntu) และ (2) มันต้องใช้ login shell (เช่นbash --login) ซึ่งไม่ใช่ ง่ายต่อการบรรลุเช่นจาก Ansible ดีที่สุดสำหรับการใช้งานแบบโต้ตอบไม่ดีสำหรับเซิร์ฟเวอร์สคริปต์
RichVel

0

ส่วนใหญ่เป็นกระจกของคำตอบนี้ด้วยอินโทรที่ปรับแต่ง

ฉันจะแนะนำpyenv มันเป็นกระบวนการสร้างโดยอัตโนมัตินอกเหนือจากการติดตั้งการพึ่งพาส่วนหัว (ดูด้านล่าง) คุณสามารถสร้างและติดตั้งใหม่ (หรือเก่า) pyenv install 3.6.0เวอร์ชั่นของงูใหญ่โดยเพียงแค่บอกว่า ทุกอย่างทำงานในฐานะผู้ใช้ของคุณดังนั้นคุณไม่ต้องกังวลกับการทำ Python ให้ยุ่งยากโดย Ubuntu เอง

ตรงข้ามกับตัวเลือกที่ใช้ apt-repo บางตัว (เช่น deadsnakes) โดยทั่วไปจะใช้งานได้ในวันเดียวกันหลังจากรีลีสpyenv updateเพราะคุณไม่จำเป็นต้องรอให้คนอื่นมารวมมัน ดูรุ่นทั้งหมดที่คุณสามารถติดตั้งได้pyenv install --list

ติดตั้ง pyenv

  1. ติดตั้งเครื่องมือและส่วนหัวที่จำเป็นในการสร้าง CPythons (Pythons ที่แปลกใหม่เช่น PyPy หรือ Jython อาจมีการพึ่งพาอื่น ๆ ) pyenv ใช้ Git บวกกับเปิดใช้งานการสร้าง / ติดตั้งของกิ่งสาขาดังนั้นคุณสามารถติดตั้งอะไรก็ได้ที่ 3.8 ตอนนี้เช่นสาขาหลักของ CPython ที่สดใหม่จาก GitHub:

    sudo apt-get install -y git
    sudo apt-get install -y build-essential libbz2-dev libssl-dev libreadline-dev \
                            libffi-dev libsqlite3-dev tk-dev
    
    # optional scientific package headers (for Numpy, Matplotlib, SciPy, etc.)
    sudo apt-get install -y libpng-dev libfreetype6-dev    
  2. เรียกใช้สคริปต์ตัวติดตั้ง (ติดตั้ง pyenv และปลั๊กอิน pyenv ที่มีประโยชน์มากโดยผู้เขียนต้นฉบับดูที่นี่สำหรับข้อมูลเพิ่มเติม)

    curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash
  3. เพิ่มบรรทัด init ให้กับของคุณ~/.profileหรือ~/.bashrc(มันกล่าวถึงในตอนท้ายของสคริปต์การติดตั้ง):

    export PATH="~/.pyenv/bin:$PATH"
    eval "$(pyenv init -)"
    eval "$(pyenv virtualenv-init -)"
  4. รีสตาร์ทเชลล์ของคุณ (ปิด & เปิดหรือexec $SHELL) หรือโหลดสคริปต์โปรไฟล์อีกครั้ง (ด้วยเช่นsource ~/.bashrc)

ทำ!

การตั้งค่าสภาพแวดล้อม

ในการไม่แตะต้องระบบ Python (โดยทั่วไปแล้วเป็นความคิดที่ไม่ดีบริการระดับ OS อาจต้องใช้ไลบรารีรุ่นที่เจาะจง ฯลฯ ) สร้างสภาพแวดล้อมของคุณเองมันง่ายมาก! ดียิ่งกว่านั้นไม่sudoสำหรับมันหรือpipติดตั้ง!

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

    pyenv install 3.6.0
  2. ทำให้เป็น virtualenv เพื่อให้คุณสามารถสร้างคนอื่นได้ในภายหลังหากคุณต้องการ

    pyenv virtualenv 3.6.0 general
  3. ทำให้ใช้งานได้ทั่วโลก (สำหรับผู้ใช้ของคุณ)

    pyenv global general
  4. ทำสิ่งที่คุณต้องการด้วย Python / pip ฯลฯ เป็นของคุณ

หากคุณต้องการลบไลบรารีออกในภายหลังคุณสามารถลบ virtualenv ( pyenv uninstall general) หรือสร้างใหม่ ( pyenv virtualenv 3.6.0 other_proj) นอกจากนี้คุณยังสามารถมีสภาพแวดล้อมที่ใช้งานต่อไดเรกทอรี: pyenv local other_projจะวาง.python-versionไฟล์ลงในโฟลเดอร์ปัจจุบันของคุณและทุกครั้งที่คุณเรียกใช้โปรแกรม Python หรือ Python ยูทิลิตี้ Python ที่ติดตั้งจาก pip หรือภายใต้มันพวกเขาจะถูกควบคุมโดย pyenv

การแก้ไขปัญหา

  • bash: pyenv: command not found, fish: Unknown command 'pyenv'

    1. ตรวจสอบของคุณควรจะมีหนึ่งรายการที่สิ้นสุดในสิ่งที่ต้องการ$PATH .pyenv/binหากไม่มีให้ตรวจสอบให้แน่ใจว่าคุณได้ติดตาม # 3 AND # 4 (รีสตาร์ทเชลล์ของคุณ) ภายใต้ติดตั้ง pyenv ด้านบน
  • pyenv: no such command 'virtualenv'

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