Tiếp tục ghi lại điều này cho các bản phát hành Ubuntu mới nhất 1 : cho máy chủ Ubuntu 16.04.1, Python mặc định là phiên bản 3.5 và Python 2.7 không được cài đặt theo mặc định. Trên bản cài đặt mới (lưu ý rằng thậm chí không có python
tệp thực thi):
$ 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>
Lưu ý: trước khi tiếp tục, có thể bạn sẽ muốn làm một cách nhanh chóng sudo apt-get update
, sudo apt-get upgrade
và sudo apt-get dist-upgrade
(xin vui lòng lưu ý chính xác những gì các lệnh này là trong thực tế làm; Tôi giả định một tươi cài đặt ở đây.)
Cài đặt python 2.7 dễ dàng như:
$ sudo apt-get install python2.7
Đầu ra ban đầu của việc cài đặt python 2.7 như sau:
$ 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...
Sau khi cài đặt 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
Nhưng vẫn còn một vấn đề, vì bạn chưa thể cài đặt các mô-đun PyPI thông qua pip
- ví dụ: nếu bạn muốn máy tính xách tay jupyter, hoặc scipy hoặc numpy mới nhất (v.v.), bạn sẽ muốn cài đặt pip
và sau đó pip install
chuyển sang các mô-đun đó , và vẫn chuyển sang apt-get
để cài đặt bất kỳ phụ thuộc hệ thống cần thiết , như graphviz hoặc thư viện hệ thống cốt lõi.
$ 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
Vì vậy, để cài đặt pip, một lần nữa, thật dễ dàng như 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
Bạn sẽ cần cả python-pip
cho Python 2.7 pip
và python3-pip
cho Python 3 pip
. Việc cài đặt thông qua apt-get
chắc chắn sẽ cài đặt các phụ thuộc cần thiết; ví dụ, đây là đầu ra để cài đặt 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...
Một điều thú vị xảy ra là kết quả của việc này: bây giờ bạn có "tiêu chuẩn" (và khuyến nghị PEP) python2
và python3
(chỉ là liên kết tượng trưng cho python 2.7 và 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
Bạn cũng sẽ muốn sudo apt-get install python3-pip
; trước khi cài đặt, bạn có:
$ 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
Sau khi cài đặt 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...
Các phiên bản kết quả:
$ 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)
Và một điều cuối cùng trước khi bạn có thể đi và bắt đầu cài đặt tất cả các mô-đun PyPI python yêu thích của mình: có thể bạn sẽ phải tự nâng cấp pip (cả pip2 và pip3, cũng không thành vấn đề nếu pip
được gọi thông qua các python
tệp thực thi hoặc pip
thực thi, các nâng cấp thực tế được lưu trữ trong /usr/lib
):
$ sudo -H python2 -m pip install --upgrade pip
...
$ sudo -H python3 -m pip install --upgrade pip
...
Bây giờ bạn có thể chạy độc lập pip
hoặc phiên bản được gói trong python
(thông qua python -m pip {command}
).
[1] Tóm tắt lịch sử: Ubuntu cũ hơn chỉ có Python 2.6, do đó tất cả các phương pháp khác nhau để cài đặt Python 2.7+. Sau này, sau khi Python 2.7 được thêm vào kho lưu trữ công cộng, chúng tôi vẫn gặp khó khăn tương tự để cài đặt Python 2.7 mới nhất với các bản sửa lỗi mới nhất, điều này thường xuyên (quá) cần thiết. Tình hình ngày nay tốt hơn / đơn giản hơn nhiều: Python 2.7 & 3.5 hiện tại (về cơ bản là hai phiên bản nền tảng Python duy nhất mà mọi người quan tâm) hiện đang ở trong kho công khai rất ổn định, vì vậy bây giờ chúng tôi thực sự chỉ phải lo lắng về việc cài đặt mới nhất mô-đun python , không phải là python mới nhất . Vì vậy, bây giờ "vấn đề phiên bản mới nhất" của Python đã chuyển một phần ra khỏi repos của hệ điều hành & apt
và thành PyPI & pip
.)
sudo apt-get install python-2.7 python-pip