Bạn không cần cài đặt hay cấu hình bất cứ thứ gì khác để sử dụng Python 2. Các hướng dẫn này ghi lại quá trình cài đặt Python 3
Phiên bản Python đi kèm với OS X rất tốt cho việc học nhưng không tốt cho việc phát triển. Phiên bản được cung cấp cùng với OS X có thể đã lỗi thời so với bản phát hành Python chính thức hiện tại, được coi là phiên bản sản xuất ổn định
Làm đúng¶
Hãy cài đặt phiên bản thực của Python
Trước khi cài đặt Python, bạn cần cài đặt GCC. Có thể lấy GCC bằng cách tải xuống Xcode, Công cụ dòng lệnh nhỏ hơn [phải có tài khoản Apple] hoặc gói OSX-GCC-Installer thậm chí còn nhỏ hơn
Ghi chú
Nếu bạn đã cài đặt Xcode, đừng cài đặt OSX-GCC-Installer. Kết hợp lại, phần mềm có thể gây ra các sự cố khó chẩn đoán
Ghi chú
Nếu bạn thực hiện cài đặt Xcode mới, bạn cũng sẽ cần thêm các công cụ dòng lệnh bằng cách chạy
export PATH="/usr/local/opt/python/libexec/bin:$PATH"
93 trên thiết bị đầu cuốiMặc dù OS X đi kèm với một số lượng lớn các tiện ích Unix, nhưng những người quen thuộc với hệ thống Linux sẽ nhận thấy thiếu một thành phần chính. người quản lý gói. Homebrew lấp đầy khoảng trống này
Để cài đặt Homebrew, hãy mở
export PATH="/usr/local/opt/python/libexec/bin:$PATH"
94 hoặc trình giả lập thiết bị đầu cuối OS X yêu thích của bạn và chạy$ /bin/bash -c "$[curl -fsSL //raw.githubusercontent.com/Homebrew/install/master/install.sh]"
Tập lệnh sẽ giải thích những thay đổi mà tập lệnh sẽ thực hiện và nhắc bạn trước khi quá trình cài đặt bắt đầu. Khi bạn đã cài đặt Homebrew, hãy chèn thư mục Homebrew ở đầu biến môi trường
export PATH="/usr/local/opt/python/libexec/bin:$PATH"
0 của bạn. Bạn có thể thực hiện việc này bằng cách thêm dòng sau vào cuối tệp export PATH="/usr/local/opt/python/libexec/bin:$PATH"
1 của mìnhexport PATH="/usr/local/opt/python/libexec/bin:$PATH"
Nếu bạn có OS X 10. 12 [Sierra] trở lên sử dụng dòng này thay thế
export PATH=/usr/local/bin:/usr/local/sbin:$PATH
Bây giờ, chúng ta có thể cài đặt Python 3
$ brew install python
Quá trình này sẽ mất một hoặc hai phút
Pip¶
Homebrew cài đặt
export PATH="/usr/local/opt/python/libexec/bin:$PATH"
2 trỏ đến Homebrew'd Python 3 cho bạnLàm việc với Python 3¶
Lúc này, bạn đã có hệ thống Python 2. 7 có sẵn, có thể là phiên bản Homebrew của Python 2 đã được cài đặt và cả phiên bản Homebrew của Python 3.
$ python
sẽ khởi chạy trình thông dịch Python 3 được cài đặt Homebrew
________số 8
sẽ khởi chạy trình thông dịch Python 2 được cài đặt Homebrew [nếu có]
$ python3
sẽ khởi chạy trình thông dịch Python 3 được cài đặt Homebrew
Nếu phiên bản Homebrew của Python 2 được cài đặt thì
export PATH="/usr/local/opt/python/libexec/bin:$PATH"
3 sẽ trỏ đến Python 2. Nếu phiên bản Homebrew của Python 3 được cài đặt thì export PATH="/usr/local/opt/python/libexec/bin:$PATH"
2 sẽ trỏ đến Python 3Phần còn lại của hướng dẫn sẽ giả định rằng
export PATH="/usr/local/opt/python/libexec/bin:$PATH"
5 tham khảo Python 3export PATH="/usr/local/opt/python/libexec/bin:$PATH"
3Pipenv & Môi trường ảo¶
Bước tiếp theo là cài đặt Pipenv, để bạn có thể cài đặt các phụ thuộc và quản lý môi trường ảo
Môi trường ảo là một công cụ để giữ các phần phụ thuộc theo yêu cầu của các dự án khác nhau ở những nơi riêng biệt, bằng cách tạo môi trường Python ảo cho chúng. Nó giải quyết “Dự án X phụ thuộc vào phiên bản 1. x nhưng Dự án Y cần 4. x” và giữ cho thư mục gói trang web toàn cầu của bạn sạch sẽ và dễ quản lý
Ví dụ: bạn có thể làm việc trên một dự án yêu cầu Django 1. 10 đồng thời duy trì một dự án yêu cầu Django 1. 8
pip là một chương trình dòng lệnh. Khi bạn cài đặt pip, một lệnh
export PATH="/usr/local/opt/python/libexec/bin:$PATH"
48 sẽ được thêm vào hệ thống của bạn, lệnh này có thể được chạy từ dấu nhắc lệnh như sauUnix/macOS
export PATH="/usr/local/opt/python/libexec/bin:$PATH"
5export PATH="/usr/local/opt/python/libexec/bin:$PATH"
49 thực thi pip bằng trình thông dịch Python mà bạn đã chỉ định là python. Vì vậy, export PATH="/usr/local/opt/python/libexec/bin:$PATH"
70 có nghĩa là bạn đang thực hiện pip cho thông dịch viên của bạn tại export PATH="/usr/local/opt/python/libexec/bin:$PATH"
71các cửa sổexport PATH="/usr/local/opt/python/libexec/bin:$PATH"
9export PATH="/usr/local/opt/python/libexec/bin:$PATH"
72 thực thi pip bằng trình thông dịch Python mới nhất mà bạn đã cài đặt. Để biết thêm chi tiết, hãy đọc tài liệu Python Windows launcherCài đặt gói #
pip hỗ trợ cài đặt từ PyPI, kiểm soát phiên bản, dự án cục bộ và trực tiếp từ tệp phân phối
Kịch bản phổ biến nhất là cài đặt từ PyPI bằng cách sử dụng Công cụ xác định yêu cầu
Unix/macOS
export PATH="/usr/local/opt/python/libexec/bin:$PATH"
1các cửa sổexport PATH="/usr/local/opt/python/libexec/bin:$PATH"
2Để biết thêm thông tin và ví dụ, hãy xem tài liệu tham khảo cài đặt pip .
Thông tin xác thực cơ bản
Điều này hiện được đề cập trong Xác thực .
hỗ trợ mạng
Điều này hiện được đề cập trong Xác thực .
Hỗ trợ móc khóa
Điều này hiện được đề cập trong Xác thực .
Sử dụng Máy chủ Proxy#
Khi cài đặt các gói từ PyPI, pip yêu cầu truy cập internet, trong nhiều môi trường công ty yêu cầu máy chủ proxy HTTP gửi đi
pip có thể được cấu hình để kết nối thông qua máy chủ proxy theo nhiều cách khác nhau
sử dụng tùy chọn dòng lệnh
export PATH="/usr/local/opt/python/libexec/bin:$PATH"
73 để chỉ định proxy ở dạngexport PATH="/usr/local/opt/python/libexec/bin:$PATH"
74sử dụng
export PATH="/usr/local/opt/python/libexec/bin:$PATH"
75 trong Tệp cấu hìnhbằng cách thiết lập các biến môi trường tiêu chuẩn
export PATH="/usr/local/opt/python/libexec/bin:$PATH"
76,export PATH="/usr/local/opt/python/libexec/bin:$PATH"
77 vàexport PATH="/usr/local/opt/python/libexec/bin:$PATH"
78sử dụng biến môi trường
export PATH="/usr/local/opt/python/libexec/bin:$PATH"
79 để bao gồm một chuỗi được mã hóa JSON trong biến tác nhân người dùng được sử dụng trong các yêu cầu của pip
Tệp yêu cầu #
“Tệp yêu cầu” là các tệp chứa danh sách các mục sẽ được cài đặt bằng cách sử dụng pip install như vậy.
Unix/macOS
export PATH="/usr/local/opt/python/libexec/bin:$PATH"
0các cửa sổexport PATH="/usr/local/opt/python/libexec/bin:$PATH"
4Chi tiết về định dạng của các tệp có tại đây. Định dạng tệp yêu cầu .
Về mặt logic, tệp Yêu cầu chỉ là danh sách các đối số pip install được đặt trong một tệp. Lưu ý rằng bạn không nên dựa vào các mục trong tệp được cài đặt bởi pip theo bất kỳ thứ tự cụ thể nào.
Trong thực tế, có 4 cách sử dụng tệp Yêu cầu phổ biến
Tệp yêu cầu được sử dụng để giữ kết quả từ pip freeze nhằm mục đích đạt được Lượt cài đặt lặp lại . Trong trường hợp này, tệp yêu cầu của bạn chứa phiên bản được ghim của mọi thứ đã được cài đặt khi chạy
export PATH="/usr/local/opt/python/libexec/bin:$PATH"
20. . In this case, your requirement file contains a pinned version of everything that was installed whenexport PATH="/usr/local/opt/python/libexec/bin:$PATH"
20 was run.Unix/macOS
export PATH="/usr/local/opt/python/libexec/bin:$PATH"
7các cửa sổexport PATH="/usr/local/opt/python/libexec/bin:$PATH"
2Các tệp yêu cầu được sử dụng để buộc pip giải quyết đúng các phụ thuộc. điểm 20. 2 trở về trước không có độ phân giải phụ thuộc thực sự mà thay vào đó chỉ sử dụng thông số kỹ thuật đầu tiên mà nó tìm thấy cho một dự án. e. g. nếu
export PATH="/usr/local/opt/python/libexec/bin:$PATH"
21 yêu cầuexport PATH="/usr/local/opt/python/libexec/bin:$PATH"
22 vàexport PATH="/usr/local/opt/python/libexec/bin:$PATH"
23 yêu cầuexport PATH="/usr/local/opt/python/libexec/bin:$PATH"
24 và nếuexport PATH="/usr/local/opt/python/libexec/bin:$PATH"
21 được giải quyết trước, pip sẽ chỉ sử dụngexport PATH="/usr/local/opt/python/libexec/bin:$PATH"
22 và có thể dễ dàng cài đặt phiên bảnexport PATH="/usr/local/opt/python/libexec/bin:$PATH"
27 xung đột với nhu cầu củaexport PATH="/usr/local/opt/python/libexec/bin:$PATH"
23. Để giải quyết vấn đề này, bạn có thể đặtexport PATH="/usr/local/opt/python/libexec/bin:$PATH"
24 [i. e. thông số kỹ thuật chính xác] trực tiếp vào tệp yêu cầu của bạn cùng với các yêu cầu cấp cao nhất khác. như vậyexport PATH=/usr/local/bin:/usr/local/sbin:$PATH
4Các tệp yêu cầu được sử dụng để buộc pip cài đặt phiên bản thay thế của phụ thuộc phụ. Ví dụ: giả sử
export PATH=/usr/local/bin:/usr/local/sbin:$PATH
40 trong tệp yêu cầu của bạn yêu cầuexport PATH=/usr/local/bin:/usr/local/sbin:$PATH
41, nhưng phiên bản mới nhất [v1. 3] có lỗi, bạn có thể buộc pip chấp nhận các phiên bản cũ hơn như vậyexport PATH=/usr/local/bin:/usr/local/sbin:$PATH
7Các tệp yêu cầu được sử dụng để ghi đè một phụ thuộc bằng một bản vá cục bộ nằm trong kiểm soát phiên bản. Ví dụ: giả sử phụ thuộc
export PATH=/usr/local/bin:/usr/local/sbin:$PATH
42 từ PyPI có lỗi và bạn không thể đợi bản sửa lỗi ngược dòng. Bạn có thể sao chép/sao chép src, sửa lỗi và đặt nó vào VCS bằng thẻexport PATH=/usr/local/bin:/usr/local/sbin:$PATH
43. Bạn sẽ tham khảo nó trong tệp yêu cầu của mình với một dòng như vậyexport PATH="/usr/local/opt/python/libexec/bin:$PATH"
90Nếu trước đây
export PATH=/usr/local/bin:/usr/local/sbin:$PATH
42 là yêu cầu cấp cao nhất trong tệp yêu cầu của bạn thì hãy thay thế dòng đó bằng dòng mới. Nếuexport PATH=/usr/local/bin:/usr/local/sbin:$PATH
42 là phụ thuộc phụ, hãy thêm dòng mới
Điều quan trọng cần làm rõ là pip xác định các gói phụ thuộc bằng cách sử dụng siêu dữ liệu install_requires, chứ không phải bằng cách khám phá các tệp
export PATH=/usr/local/bin:/usr/local/sbin:$PATH
46 được nhúng trong các dự ánXem thêm
Định dạng tệp yêu cầu
đóng băng pip
"thành lập. py so với yêu cầu. txt” [một bài báo của Donald Stufft]
Tập tin ràng buộc #
Tệp ràng buộc là tệp yêu cầu chỉ kiểm soát phiên bản nào của yêu cầu được cài đặt chứ không phải phiên bản đó có được cài đặt hay không. Cú pháp và nội dung của chúng là một tập hợp con của Tệp yêu cầu , với một số loại cú pháp không được phép. các ràng buộc phải có tên, chúng không thể chỉnh sửa được và chúng không thể chỉ định các phần bổ sung. Về mặt ngữ nghĩa, có một điểm khác biệt chính. Bao gồm một gói trong tệp ràng buộc không kích hoạt cài đặt gói.
Sử dụng một tệp ràng buộc như vậy
Unix/macOS
export PATH="/usr/local/opt/python/libexec/bin:$PATH"
91các cửa sổexport PATH="/usr/local/opt/python/libexec/bin:$PATH"
92Các tệp ràng buộc được sử dụng vì lý do chính xác giống như các tệp yêu cầu khi bạn không biết chính xác những thứ bạn muốn cài đặt. Chẳng hạn, giả sử rằng gói “helloworld” không hoạt động trong môi trường của bạn, vì vậy bạn có một phiên bản vá cục bộ. Một số thứ bạn cài đặt phụ thuộc vào “helloworld” và một số thì không
Một cách để đảm bảo rằng phiên bản đã vá được sử dụng một cách nhất quán là kiểm tra thủ công các phần phụ thuộc của mọi thứ bạn cài đặt và nếu có “helloworld”, hãy viết một tệp yêu cầu để sử dụng khi cài đặt thứ đó
Các tệp ràng buộc cung cấp một cách tốt hơn. viết một tệp ràng buộc duy nhất cho tổ chức của bạn và sử dụng tệp đó ở mọi nơi. Nếu thứ đang được cài đặt yêu cầu cài đặt “helloworld”, phiên bản cố định được chỉ định trong tệp ràng buộc của bạn sẽ được sử dụng
Hỗ trợ tệp ràng buộc đã được thêm vào trong pip 7. 1. Trong Thay đổi đối với trình phân giải phụ thuộc pip trong 20. 3 [2020] chúng tôi đã thực hiện một cuộc đại tu khá toàn diện, loại bỏ một số lỗi không có giấy tờ và không được hỗ trợ khỏi lần triển khai trước đó, đồng thời loại bỏ các tệp ràng buộc thành một cách hoàn toàn để chỉ định giới hạn [phiên bản] toàn cầu cho các gói.
Cài đặt từ Wheels#
“Wheel” là một định dạng lưu trữ được xây dựng có thể tăng tốc độ cài đặt rất nhiều so với việc xây dựng và cài đặt từ các kho lưu trữ nguồn. Để biết thêm thông tin, hãy xem Tài liệu bánh xe , PEP 427 và PEP 425
pip thích Bánh xe hơn nếu chúng có sẵn. Để tắt tính năng này, hãy sử dụng cờ --no-binary cho pip install.
Nếu không tìm thấy bánh xe ưng ý, pip sẽ mặc định tìm kho lưu trữ nguồn
Để cài đặt trực tiếp từ kho lưu trữ bánh xe
Unix/macOS
export PATH="/usr/local/opt/python/libexec/bin:$PATH"
93các cửa sổexport PATH="/usr/local/opt/python/libexec/bin:$PATH"
94Để bao gồm các phụ thuộc tùy chọn được cung cấp trong siêu dữ liệu
export PATH=/usr/local/bin:/usr/local/sbin:$PATH
47 trong bánh xe, bạn phải thêm dấu ngoặc kép xung quanh tên mục tiêu cài đặtUnix/macOS
export PATH="/usr/local/opt/python/libexec/bin:$PATH"
95các cửa sổexport PATH="/usr/local/opt/python/libexec/bin:$PATH"
96Ghi chú
Trong tương lai, cú pháp
export PATH=/usr/local/bin:/usr/local/sbin:$PATH
48 có thể không được dùng nữa. Nên sử dụng cú pháp PEP 508 bất cứ khi nào có thểĐối với những trường hợp không có bánh xe, pip cung cấp bánh xe pip để thuận tiện, tạo bánh xe cho tất cả các yêu cầu và phụ thuộc của bạn.
pip wheel yêu cầu phải cài đặt gói bánh xe, gói này cung cấp tiện ích mở rộng công cụ thiết lập “bdist_wheel” mà gói này sử dụng.
Để xây dựng các bánh xe cho các yêu cầu của bạn và tất cả các phụ thuộc của chúng vào một thư mục cục bộ
Unix/macOS
export PATH="/usr/local/opt/python/libexec/bin:$PATH"
97các cửa sổexport PATH="/usr/local/opt/python/libexec/bin:$PATH"
98Và sau đó để cài đặt các yêu cầu đó, chỉ cần sử dụng thư mục bánh xe cục bộ của bạn [chứ không phải từ PyPI]
Unix/macOS
export PATH="/usr/local/opt/python/libexec/bin:$PATH"
99các cửa sổexport PATH="/usr/local/opt/python/libexec/bin:$PATH"
10Gỡ cài đặt gói #
pip có thể gỡ cài đặt hầu hết các gói như vậy
Unix/macOS
export PATH="/usr/local/opt/python/libexec/bin:$PATH"
11các cửa sổexport PATH="/usr/local/opt/python/libexec/bin:$PATH"
12pip cũng thực hiện gỡ cài đặt tự động phiên bản cũ của gói trước khi nâng cấp lên phiên bản mới hơn
Để biết thêm thông tin và ví dụ, hãy xem tham chiếu gỡ cài đặt pip .
Liệt kê các gói #
Để liệt kê các gói đã cài đặt
Unix/macOS
export PATH="/usr/local/opt/python/libexec/bin:$PATH"
13các cửa sổexport PATH="/usr/local/opt/python/libexec/bin:$PATH"
14Để liệt kê các gói lỗi thời và hiển thị phiên bản mới nhất hiện có
Unix/macOS
export PATH="/usr/local/opt/python/libexec/bin:$PATH"
15các cửa sổexport PATH="/usr/local/opt/python/libexec/bin:$PATH"
16Để hiển thị chi tiết về gói đã cài đặt
Unix/macOS
export PATH="/usr/local/opt/python/libexec/bin:$PATH"
17các cửa sổexport PATH="/usr/local/opt/python/libexec/bin:$PATH"
18Để biết thêm thông tin và ví dụ, hãy xem danh sách pip và chương trình pip reference pages.
Tìm kiếm gói #
pip có thể tìm kiếm các gói PyPI bằng lệnh
export PATH=/usr/local/bin:/usr/local/sbin:$PATH
49Unix/macOS
export PATH="/usr/local/opt/python/libexec/bin:$PATH"
19các cửa sổexport PATH="/usr/local/opt/python/libexec/bin:$PATH"
20Truy vấn sẽ được sử dụng để tìm kiếm tên và tóm tắt của tất cả các gói
Để biết thêm thông tin và ví dụ, hãy xem tài liệu tham khảo pip search .
Cấu hình
Điều này hiện có trong Cấu hình .
Tập tin cấu hình
Điều này hiện có trong Cấu hình .
Biến môi trường
Điều này hiện có trong Cấu hình .
Ưu tiên cấu hình
Điều này hiện có trong Cấu hình .
Hoàn thành lệnh#
pip hỗ trợ hoàn thành dòng lệnh trong bash, zsh và fish
Để thiết lập cho bash
export PATH="/usr/local/opt/python/libexec/bin:$PATH"
21Để thiết lập cho zsh
export PATH="/usr/local/opt/python/libexec/bin:$PATH"
22Để thiết lập cho cá
export PATH="/usr/local/opt/python/libexec/bin:$PATH"
23Để thiết lập cho powershell
export PATH="/usr/local/opt/python/libexec/bin:$PATH"
24Ngoài ra, bạn có thể sử dụng trực tiếp kết quả của lệnh
export PATH=/usr/local/bin:/usr/local/sbin:$PATH
70 với hàm eval của trình bao của bạn, e. g. bằng cách thêm phần sau vào tệp khởi động của bạnexport PATH="/usr/local/opt/python/libexec/bin:$PATH"
25Cài đặt từ các gói cục bộ#
Trong một số trường hợp, bạn có thể chỉ muốn cài đặt từ các gói cục bộ, không có lưu lượng truy cập đến PyPI
Trước tiên, hãy tải xuống các kho lưu trữ đáp ứng yêu cầu của bạn
Unix/macOS
export PATH="/usr/local/opt/python/libexec/bin:$PATH"
26các cửa sổexport PATH="/usr/local/opt/python/libexec/bin:$PATH"
27Lưu ý rằng
export PATH=/usr/local/bin:/usr/local/sbin:$PATH
71 sẽ tìm trong bộ đệm bánh xe của bạn trước, trước khi thử tải xuống từ PyPI. Nếu bạn chưa bao giờ cài đặt các yêu cầu của mình trước đây, thì bạn sẽ không có bộ đệm bánh xe cho các mục đó. Trong trường hợp đó, nếu một số yêu cầu của bạn không có dạng bánh xe từ PyPI và bạn muốn có bánh xe, thì hãy chạy cái này để thay thếUnix/macOS
export PATH="/usr/local/opt/python/libexec/bin:$PATH"
28các cửa sổexport PATH="/usr/local/opt/python/libexec/bin:$PATH"
29Sau đó, để chỉ cài đặt từ cục bộ, bạn sẽ sử dụng --tìm liên kết và --no-index like so:
Unix/macOS
export PATH="/usr/local/opt/python/libexec/bin:$PATH"
00các cửa sổexport PATH="/usr/local/opt/python/libexec/bin:$PATH"
01“Chỉ khi cần” Nâng cấp đệ quy#
export PATH=/usr/local/bin:/usr/local/sbin:$PATH
72 hiện có tùy chọn export PATH=/usr/local/bin:/usr/local/sbin:$PATH
73 kiểm soát cách pip xử lý việc nâng cấp các phụ thuộc. Có 2 chiến lược nâng cấp được hỗ trợexport PATH=/usr/local/bin:/usr/local/sbin:$PATH
74. nâng cấp tất cả các phụ thuộc bất kể chúng có đáp ứng các yêu cầu mới của cha mẹ hay khôngexport PATH=/usr/local/bin:/usr/local/sbin:$PATH
75. chỉ nâng cấp một phụ thuộc nếu nó không đáp ứng các yêu cầu mới của cha mẹ
Chiến lược mặc định là
export PATH=/usr/local/bin:/usr/local/sbin:$PATH
75. Điều này đã được thay đổi trong pip 10. 0 do tính chất vi phạm của export PATH=/usr/local/bin:/usr/local/sbin:$PATH
74 khi nâng cấp các phụ thuộc xung độtĐiều quan trọng cần lưu ý là
export PATH=/usr/local/bin:/usr/local/sbin:$PATH
78 ảnh hưởng đến các yêu cầu trực tiếp [e. g. những thứ được chỉ định trên dòng lệnh hoặc thông qua tệp yêu cầu] trong khi export PATH=/usr/local/bin:/usr/local/sbin:$PATH
73 ảnh hưởng đến các yêu cầu gián tiếp [phụ thuộc của các yêu cầu trực tiếp]Ví dụ: giả sử
export PATH="/usr/local/opt/python/libexec/bin:$PATH"
900 có một phụ thuộc, export PATH=/usr/local/bin:/usr/local/sbin:$PATH
42 và cả hai đều đã được cài đặt nhưng không phải là phiên bản mới nhất hiện cóexport PATH="/usr/local/opt/python/libexec/bin:$PATH"
902. sẽ không nâng cấpexport PATH="/usr/local/opt/python/libexec/bin:$PATH"
900 hoặcexport PATH=/usr/local/bin:/usr/local/sbin:$PATH
42 hiện tạiexport PATH="/usr/local/opt/python/libexec/bin:$PATH"
905. sẽ nâng cấpexport PATH="/usr/local/opt/python/libexec/bin:$PATH"
900, nhưng không nâng cấpexport PATH=/usr/local/bin:/usr/local/sbin:$PATH
42 [trừ khi không đáp ứng yêu cầu tối thiểu]export PATH="/usr/local/opt/python/libexec/bin:$PATH"
908. nâng cấp cảexport PATH="/usr/local/opt/python/libexec/bin:$PATH"
900 vàexport PATH=/usr/local/bin:/usr/local/sbin:$PATH
42
Như một ghi chú lịch sử, một "bản sửa lỗi" trước đó để có được hành vi
export PATH=/usr/local/bin:/usr/local/sbin:$PATH
75 làUnix/macOS
export PATH="/usr/local/opt/python/libexec/bin:$PATH"
02các cửa sổexport PATH="/usr/local/opt/python/libexec/bin:$PATH"
03Một đề xuất cho lệnh
export PATH="/usr/local/opt/python/libexec/bin:$PATH"
912 đang được coi là một giải pháp thay thế an toàn hơn cho hành vi háo hức nâng cấpSố lượt cài đặt của người dùng
Với Python 2. 6 đã xuất hiện “sơ đồ người dùng” để cài đặt, có nghĩa là tất cả các bản phân phối Python đều hỗ trợ một vị trí cài đặt thay thế dành riêng cho người dùng. Vị trí mặc định cho mỗi hệ điều hành được giải thích trong tài liệu python cho trang web. biến USER_BASE. Có thể bật chế độ cài đặt này bằng cách chỉ định tùy chọn --người dùng cho
export PATH="/usr/local/opt/python/libexec/bin:$PATH"
913. Hơn nữa, “sơ đồ người dùng” có thể được tùy chỉnh bằng cách đặt biến môi trường
export PATH="/usr/local/opt/python/libexec/bin:$PATH"
914, biến này cập nhật giá trị của export PATH="/usr/local/opt/python/libexec/bin:$PATH"
915Để cài đặt “SomePackage” vào môi trường có
export PATH="/usr/local/opt/python/libexec/bin:$PATH"
915 được tùy chỉnh thành ‘/myappenv’, hãy làm như sauUnix/macOS
export PATH="/usr/local/opt/python/libexec/bin:$PATH"
04các cửa sổexport PATH="/usr/local/opt/python/libexec/bin:$PATH"
05export PATH="/usr/local/opt/python/libexec/bin:$PATH"
917 tuân theo bốn quy tắcKhi các gói được cài đặt trên toàn cầu nằm trên đường dẫn python và chúng xung đột với các yêu cầu cài đặt, chúng sẽ bị bỏ qua và không được gỡ cài đặt
Khi các gói được cài đặt toàn cầu nằm trên đường dẫn python và chúng đáp ứng các yêu cầu cài đặt, pip không làm gì cả và báo cáo rằng yêu cầu đó đã được đáp ứng [tương tự như cách các gói toàn cầu có thể đáp ứng các yêu cầu khi cài đặt các gói trong virtualenv
export PATH="/usr/local/opt/python/libexec/bin:$PATH"
918]pip sẽ không thực hiện cài đặt
export PATH="/usr/local/opt/python/libexec/bin:$PATH"
919 trong virtualenvexport PATH="/usr/local/opt/python/libexec/bin:$PATH"
920 [i. e. loại virtualenv mặc định], do trang web của người dùng không nằm trên đường dẫn python. Việc cài đặt sẽ là vô nghĩaTrong virtualenv
export PATH="/usr/local/opt/python/libexec/bin:$PATH"
918, pip sẽ không cài đặt gói xung đột với gói trong gói trang web virtualenv. Cài đặt --user sẽ thiếu sys. ưu tiên đường dẫn và vô nghĩa
Để làm cho các quy tắc rõ ràng hơn, đây là một số ví dụ
Từ bên trong một virtualenv
export PATH="/usr/local/opt/python/libexec/bin:$PATH"
920 [i. e. loại mặc định]Unix/macOS
export PATH="/usr/local/opt/python/libexec/bin:$PATH"
06các cửa sổexport PATH="/usr/local/opt/python/libexec/bin:$PATH"
07Từ trong một virtualenv
export PATH="/usr/local/opt/python/libexec/bin:$PATH"
918 trong đó export PATH="/usr/local/opt/python/libexec/bin:$PATH"
924 đã được cài đặt trong virtualenvUnix/macOS
export PATH="/usr/local/opt/python/libexec/bin:$PATH"
08các cửa sổexport PATH="/usr/local/opt/python/libexec/bin:$PATH"
09Từ bên trong một con trăn thực, nơi mà
export PATH="/usr/local/opt/python/libexec/bin:$PATH"
900 không được cài đặt trên toàn cầuUnix/macOS
export PATH="/usr/local/opt/python/libexec/bin:$PATH"
40các cửa sổexport PATH="/usr/local/opt/python/libexec/bin:$PATH"
41Từ bên trong một con trăn thực, trong đó
export PATH="/usr/local/opt/python/libexec/bin:$PATH"
900 được cài đặt trên toàn cầu, nhưng không phải là phiên bản mới nhấtUnix/macOS
export PATH="/usr/local/opt/python/libexec/bin:$PATH"
42các cửa sổexport PATH="/usr/local/opt/python/libexec/bin:$PATH"
43Từ bên trong một con trăn thực, nơi mà
export PATH="/usr/local/opt/python/libexec/bin:$PATH"
900 được cài đặt trên toàn cầu và là phiên bản mới nhấtUnix/macOS
export PATH="/usr/local/opt/python/libexec/bin:$PATH"
44các cửa sổexport PATH="/usr/local/opt/python/libexec/bin:$PATH"
45Đảm bảo khả năng lặp lại
Điều này hiện được đề cập trong Lượt cài đặt lặp lại .
Sửa chữa các phụ thuộc xung đột
Điều này hiện được đề cập trong Giải pháp phụ thuộc .
Sử dụng pip từ chương trình của bạn#
Như đã lưu ý trước đây, pip là một chương trình dòng lệnh. Mặc dù nó được triển khai bằng Python và do đó có sẵn từ mã Python của bạn qua
export PATH="/usr/local/opt/python/libexec/bin:$PATH"
928, nhưng bạn không được sử dụng các API nội bộ của pip theo cách này. Có một số lý do cho việc nàyMã pip giả định rằng nó nằm trong quyền kiểm soát duy nhất đối với trạng thái chung của chương trình. pip quản lý những thứ như cấu hình hệ thống ghi nhật ký hoặc giá trị của luồng IO tiêu chuẩn mà không xem xét khả năng mã người dùng có thể bị ảnh hưởng
mã của pip không phải là luồng an toàn. Nếu bạn chạy pip trong một luồng, không có gì đảm bảo rằng mã của bạn hoặc của pip sẽ hoạt động như bạn mong đợi
pip giả định rằng sau khi hoàn thành công việc, quá trình sẽ kết thúc. Không cần xử lý khả năng mã khác sẽ tiếp tục chạy sau thời điểm đó, vì vậy [ví dụ] gọi pip hai lần trong cùng một quy trình có khả năng xảy ra sự cố
Điều này không có nghĩa là về nguyên tắc, các nhà phát triển pip phản đối ý tưởng rằng pip có thể được sử dụng làm thư viện - chỉ là đây không phải là cách nó được viết và sẽ cần rất nhiều công việc để thiết kế lại phần bên trong để sử dụng . Và đơn giản là chúng tôi hiện không có đủ nguồn lực để xem xét một nhiệm vụ như vậy
Điều này có nghĩa là trong thực tế, mọi thứ bên trong pip được coi là chi tiết triển khai. Ngay cả tên nhập khẩu là
export PATH="/usr/local/opt/python/libexec/bin:$PATH"
48 cũng có thể thay đổi mà không cần báo trước. Mặc dù chúng tôi cố gắng không làm hỏng mọi thứ nhiều nhất có thể, nhưng tất cả các API nội bộ có thể thay đổi bất cứ lúc nào, vì bất kỳ lý do gì. Điều đó cũng có nghĩa là chúng tôi thường không khắc phục các sự cố do sử dụng pip theo cách không được hỗ trợCũng cần lưu ý rằng việc cài đặt các gói vào
export PATH="/usr/local/opt/python/libexec/bin:$PATH"
930 trong quy trình Python đang chạy là điều chỉ nên được thực hiện cẩn thận. Hệ thống nhập lưu trữ một số dữ liệu nhất định và việc cài đặt các gói mới trong khi chương trình đang chạy có thể không phải lúc nào cũng hoạt động như mong đợi. Trong thực tế, hiếm khi có vấn đề xảy ra, nhưng đó là điều cần lưu ýĐã nói tất cả những điều trên, bạn nên bao gồm các tùy chọn có sẵn nếu bạn quyết định rằng bạn muốn chạy pip từ bên trong chương trình của mình. Cách tiếp cận đáng tin cậy nhất và được hỗ trợ đầy đủ là chạy pip trong quy trình con. Điều này được thực hiện dễ dàng bằng cách sử dụng mô-đun
export PATH="/usr/local/opt/python/libexec/bin:$PATH"
931 tiêu chuẩnexport PATH="/usr/local/opt/python/libexec/bin:$PATH"
46Nếu bạn muốn xử lý thêm đầu ra, hãy sử dụng một trong các API khác trong mô-đun. Chúng tôi đang sử dụng đóng băng ở đây để xuất các gói đã cài đặt ở định dạng yêu cầu
export PATH="/usr/local/opt/python/libexec/bin:$PATH"
47Nếu bạn không muốn sử dụng chức năng dòng lệnh của pip mà muốn triển khai mã hoạt động với các gói Python, siêu dữ liệu của chúng hoặc PyPI, thì bạn nên xem xét các gói khác, được hỗ trợ, cung cấp loại khả năng này. Một số ví dụ mà bạn có thể xem xét bao gồm
export PATH="/usr/local/opt/python/libexec/bin:$PATH"
932 - Các tiện ích để hoạt động với siêu dữ liệu gói tiêu chuẩn [phiên bản, yêu cầu, v.v. ]export PATH="/usr/local/opt/python/libexec/bin:$PATH"
933 [cụ thể làexport PATH="/usr/local/opt/python/libexec/bin:$PATH"
934] - Chức năng truy vấn gói mà người dùng đã cài đặt trên hệ thống của họexport PATH="/usr/local/opt/python/libexec/bin:$PATH"
935 - Các tiện ích đóng gói và phân phối [bao gồm các chức năng tương tác với PyPI]
Các thay đổi đối với trình phân giải phụ thuộc pip trong 20. 3 [2020]#
điểm 20. 3 có trình phân giải phụ thuộc mới, được bật theo mặc định cho người dùng Python 3. [pip 20. 1 và 20. Đã bao gồm 2 phiên bản phát hành trước của trình phân giải phụ thuộc mới, ẩn sau các cờ người dùng tùy chọn. ] Đọc bên dưới để biết hướng dẫn di chuyển, cách gọi trình phân giải kế thừa và tiến trình ngừng sử dụng. Chúng tôi cũng đã thực hiện một video giải thích dài hai phút mà bạn có thể xem
Chúng tôi sẽ tiếp tục cải thiện trình giải quyết phụ thuộc pip để đáp lại phản hồi của người thử nghiệm. Vui lòng gửi phản hồi cho chúng tôi thông qua khảo sát kiểm tra trình giải quyết
Coi chừng #
Thay đổi lớn trong bản phát hành này là trình phân giải phụ thuộc pip trong pip
Máy tính cần biết thứ tự phù hợp để cài đặt các phần mềm [“để cài đặt
export PATH="/usr/local/opt/python/libexec/bin:$PATH"
936, bạn cần cài đặt export PATH="/usr/local/opt/python/libexec/bin:$PATH"
937 trước”]. Vì vậy, khi các lập trình viên Python chia sẻ phần mềm dưới dạng các gói, họ phải mô tả chính xác các điều kiện tiên quyết cài đặt đó và pip cần điều hướng các tình huống khó khăn khi nhận được các hướng dẫn xung đột. Trình giải quyết phụ thuộc mới này sẽ giúp pip xử lý logic phức tạp đó tốt hơn, đồng thời giúp bạn sử dụng và khắc phục sự cố pip dễ dàng hơnNhững thay đổi quan trọng nhất đối với trình giải quyết là
Nó sẽ làm giảm sự không nhất quán. nó sẽ không còn cài đặt tổ hợp các gói không nhất quán lẫn nhau. Trong các phiên bản cũ hơn của pip, pip có thể cài đặt gói không đáp ứng các yêu cầu đã khai báo của gói đã cài đặt khác. Ví dụ, trong pip 20. 0,
export PATH="/usr/local/opt/python/libexec/bin:$PATH"
938 thực hiện sai, cài đặt “thành công”export PATH="/usr/local/opt/python/libexec/bin:$PATH"
939, mặc dùexport PATH="/usr/local/opt/python/libexec/bin:$PATH"
940 yêu cầuexport PATH="/usr/local/opt/python/libexec/bin:$PATH"
941 [được định nghĩa tại đây]. Thay vào đó, trình phân giải mới hoàn toàn từ chối cài đặt bất cứ thứ gì nếu nó nhận được đầu vào đóNó sẽ nghiêm ngặt hơn - nếu bạn yêu cầu pip cài đặt hai gói có yêu cầu không tương thích, nó sẽ từ chối [chứ không phải cài đặt một kết hợp bị hỏng, giống như trong các phiên bản trước]
Vì vậy, nếu bạn đang sử dụng các giải pháp thay thế để buộc pip xử lý các tổ hợp yêu cầu không tương thích hoặc không nhất quán, thì bây giờ là thời điểm tốt để khắc phục sự cố tiềm ẩn trong các gói, vì pip sẽ nghiêm ngặt hơn từ đây trở đi
Điều này cũng có nghĩa là khi bạn chạy lệnh
export PATH="/usr/local/opt/python/libexec/bin:$PATH"
913, pip chỉ xem xét các gói bạn đang cài đặt trong lệnh đó và có thể phá vỡ các gói đã cài đặt. Nó sẽ không đảm bảo rằng môi trường của bạn sẽ luôn nhất quán. Nếu bạn export PATH="/usr/local/opt/python/libexec/bin:$PATH"
943 và sau đó là export PATH="/usr/local/opt/python/libexec/bin:$PATH"
944, có thể phiên bản của export PATH="/usr/local/opt/python/libexec/bin:$PATH"
937 bạn nhận được sẽ khác so với phiên bản bạn đã chạy export PATH="/usr/local/opt/python/libexec/bin:$PATH"
946 trong một lệnh. Chúng tôi đang xem xét thay đổi hành vi này [theo #7744] và muốn biết suy nghĩ của bạn về hành vi của pip; Chúng tôi cũng đang thay đổi hỗ trợ cho Tệp ràng buộc , cài đặt có thể chỉnh sửa và chức năng liên quan. Chúng tôi đã thực hiện một cuộc đại tu khá toàn diện và loại bỏ các tệp ràng buộc thành một cách hoàn toàn để chỉ định giới hạn [phiên bản] toàn cầu cho các gói và do đó, một số kết hợp từng được cho phép giờ đây sẽ gây ra lỗi. Đặc biệt.
Các ràng buộc không ghi đè các yêu cầu hiện có;
Việc cung cấp một yêu cầu có thể chỉnh sửa [
export PATH="/usr/local/opt/python/libexec/bin:$PATH"
947] không khiến pip bỏ qua các ràng buộc hoặc thông số phiên bản [xem #8076] và nếu bạn có xung đột giữa một yêu cầu được ghim và một thư mục cục bộ thì pip sẽ cho biết rằng nó không thể tìm thấy phiên bản thỏa mãn cả hai [Chế độ kiểm tra hàm băm yêu cầu tất cả các yêu cầu được chỉ định là khớp với
export PATH="/usr/local/opt/python/libexec/bin:$PATH"
948 trên một phiên bản và có thể không hoạt động tốt khi kết hợp với các ràng buộc [xem #9020 và #8792]Nếu cần thiết để đáp ứng các ràng buộc, pip sẽ vui vẻ cài đặt lại các gói, nâng cấp hoặc hạ cấp mà không cần bất kỳ tùy chọn dòng lệnh bổ sung nào [xem #8115 và Các tùy chọn kiểm soát quá trình cài đặt