Dành cho gia đình Ubuntu, người dùng Debian, Linux Mint
Nhờ lời giải thích của Anthony ở trên , bạn có thể giữ lại pip hệ thống ban đầu của mình (trong / usr / bin / và dist-gói /) và xóa pip được cài đặt thủ công (trong ~ / .local /) để giải quyết xung đột:
$ python3 -m pip uninstall pip
Ubuntu / Debian pip v8.1.1 (16.04) từ python3-pip
gói debian (xem $ pip3 -V
) hiển thị kết quả tìm kiếm tương tự như pip v10.0.1 mới nhất và cài đặt các mô-đun mới nhất từ PyPI. Nó có một pip
lệnh hoạt động (đã có trong $ PATH), cộng với --user
tùy chọn đẹp được vá theo mặc định từ năm 2016. Nhìn vào ghi chú phát hành pip , các phiên bản mới hơn chủ yếu là về sửa lỗi cụ thể trong trường hợp sử dụng và một số tính năng mới nhất định, vì vậy không mọi người phải vội vàng nâng cấp pip. Và pip 10 mới có thể được triển khai lên Python virtualenvs.
Nhưng bất kể pips, hệ điều hành của bạn cho phép cài đặt nhanh các mô-đun Python phổ biến (bao gồm cả numpy) với APT, mà không cần pip, ví dụ:
$ sudo apt install python3-numpy python3-scipy
(với phụ thuộc hệ thống)
$ sudo apt install python3-pip
(pip-patched Debian, hơi cũ nhưng không thành vấn đề)
Nhắc nhở cú pháp apt nhanh (vui lòng xem man apt
để biết chi tiết):
$ sudo apt update
(để đồng bộ lại các tệp chỉ mục gói Ubuntu từ các nguồn cập nhật)
$ apt search <python-package-name>
(tìm kiếm toàn văn trên tất cả các gói có sẵn)
$ apt show <python-package-name>
(hiển thị mô tả gói chi tiết)
$ sudo apt install <python-package-name>
Tên gói có tiền tố python-
là dành cho Python 2; và tiền tố python3-
là dành cho Python 3 (ví dụ python3-pandas). Có hàng ngàn và họ trải qua thử nghiệm tích hợp trong Debian và Ubuntu. Trừ khi bạn tìm cách cài đặt ở cấp độ mỗi người dùng ( pip install --user
tùy chọn) hoặc trong virtualenv / venv, apt có thể là những gì bạn cần. Các gói hệ thống này cũng có thể truy cập được từ các env ảo, vì virtualenv sẽ quay trở lại sử dụng libs hệ thống khi nhập nếu env của bạn không có bản sao mô-đun. Các --user
mô-đun cho mỗi người dùng được cài đặt tùy chỉnh (có pip ) của ~/.local/lib
bạn cũng sẽ ghi đè lên chúng.
Lưu ý, vì đây là bản cài đặt toàn hệ thống , bạn hiếm khi cần gỡ bỏ chúng (cần lưu ý về các phụ thuộc của hệ điều hành). Điều này thuận tiện cho các gói có nhiều phụ thuộc hệ thống (như với scipy hoặc matplotlib), vì APT sẽ theo dõi và cung cấp tất cả các lib hệ thống và phần mở rộng C cần thiết, trong khi với pip bạn không có đảm bảo như vậy .
Trên thực tế, đối với các gói Python toàn hệ thống (trái ngược với mỗi người dùng, mức thư mục gia đình hoặc thấp hơn), Ubuntu mong muốn sử dụng trình quản lý gói APT (chứ không phải sudo pip
) để tránh phá vỡ HĐH: sudo pip3
nhắm mục tiêu vào cùng /usr/lib/python3/dist-packages
thư mục nơi APT lưu trữ HĐH mô-đun nhạy cảm. Các bản phát hành Debian / Ubuntu gần đây phụ thuộc nhiều vào Python 3, do đó các mô-đun được cài đặt sẵn của nó được quản lý apt
và không nên thay đổi.
Vì vậy, nếu bạn sử dụng pip3 install
lệnh, vui lòng đảm bảo rằng nó chạy trong môi trường dev ảo bị cô lập, chẳng hạn như với virtualenv ( sudo apt install python3-virtualenv
) hoặc với Python3 tích hợp ( -m venv
) hoặc ở cấp độ mỗi người dùng ( --user
tùy chọn pip, mặc định trong Ubuntu cung cấp Pip kể từ năm 2016), nhưng không phải toàn hệ thống (không bao giờ sudo pip3
!), vì pip cản trở hoạt động của trình quản lý gói APT và có thể ảnh hưởng đến các thành phần hệ điều hành Ubuntu khi mô-đun python sử dụng hệ thống bị thay đổi bất ngờ. Chúc may mắn!
P. S. Tất cả những điều trên là dành cho giải pháp 'lý tưởng' (cách Debian / Ubuntu).
Nếu bạn vẫn muốn sử dụng riêng pip3 v10 mới, có 3 cách giải quyết nhanh:
- chỉ cần mở một phiên bash mới (tab thiết bị đầu cuối mới hoặc loại
bash
) - và pip3 v10 sẽ khả dụng (xem pip3 -V
). Pip3 v8 của debian vẫn được cài đặt nhưng bị hỏng; hoặc là
- lệnh
$ hash -d pip3 && pip3 -V
để làm mới tên đường dẫn pip3 trong $ PATH. Pip3 v8 của debian vẫn được cài đặt nhưng bị hỏng; hoặc là
- lệnh
$ sudo apt remove python3-pip && hash -d pip3
gỡ cài đặt hoàn toàn pip3 v8 của debian, ủng hộ pip3 v10 mới của bạn.
Lưu ý: Bạn sẽ luôn cần thêm --user
cờ vào bất kỳ pip nào không được cung cấp, trừ khi bạn ở trong virtualenv! (nó triển khai các gói python ~/.local/
, mặc định trong python3-pip và python-pip do debian cung cấp từ năm 2016). Việc bạn sử dụng pip 10 trên toàn hệ thống, bên ngoài virtualenv, không thực sự được Ubuntu / Debian hỗ trợ. Không bao giờ sudo pip3
!
Chi tiết khác:
https://github.com/pypa/pip/issues/5221#issuecomment-382069604
https://github.com/pypa/pip/issues/5240#issuecomment-381673100