Cờ dòng lệnh python
pip là một chương trình dòng lệnh. Khi bạn cài đặt pip, một lệnh py -m pip install -r requirements.txt8 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ư sau Show
Unix/macOS python -m pip py -m pip install -r requirements.txt9 thực thi pip bằng trình thông dịch Python mà bạn đã chỉ định là python. Vì vậy, python -m pip freeze > requirements.txt python -m pip install -r requirements.txt0 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 python -m pip freeze > requirements.txt python -m pip install -r requirements.txt1các cửa sổ py -m pip python -m pip freeze > requirements.txt python -m pip install -r requirements.txt2 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 Cài đặt góipip 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 Unix/macOS python -m pip install SomePackage # latest version python -m pip install SomePackage==1.0.4 # specific version python -m pip install 'SomePackage>=1.0.4' # minimum versioncác cửa sổ ________số 8 Để biết thêm thông tin và ví dụ, xem tài liệu tham khảo 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ủ proxyKhi 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
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 như vậy Unix/macOS python -m pip6các cửa sổ py -m pip install -r requirements.txt Chi tiết về định dạng của các tập tin có tại đây. Về mặt logic, một tệp Yêu cầu chỉ là một danh sách các đối số đượ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
Đ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 python -m pip freeze > requirements.txt python -m pip install -r requirements.txt06 được nhúng trong các dự án Xem thêm
Tập tin ràng buộcCác tệp ràng buộc là các 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 , 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 py -m pip1các cửa sổ py -m pip2 Cá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 đó, 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ố yêu cầu không có giấy tờ và không được hỗ trợ khỏi quá trình 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ừ bánh xe“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ờ cho 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 py -m pip3các cửa sổ py -m pip4 Để bao gồm các phụ thuộc tùy chọn được cung cấp trong siêu dữ liệu python -m pip freeze > requirements.txt python -m pip install -r requirements.txt07 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 đặt Unix/macOS py -m pip5các cửa sổ py -m pip6 Ghi chú Trong tương lai, cú pháp python -m pip freeze > requirements.txt python -m pip install -r requirements.txt08 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ó sẵn bánh xe, pip cung cấp sự tiện lợi, để tạo bánh xe cho tất cả các yêu cầu và phụ thuộc của bạn 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à nó 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 py -m pip7các cửa sổ py -m pip8 Và 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 py -m pip9các cửa sổ python -m pip install SomePackage # latest version python -m pip install SomePackage==1.0.4 # specific version python -m pip install 'SomePackage>=1.0.4' # minimum version0 Gỡ cài đặt góipip có thể gỡ cài đặt hầu hết các gói như vậy Unix/macOS python -m pip install SomePackage # latest version python -m pip install SomePackage==1.0.4 # specific version python -m pip install 'SomePackage>=1.0.4' # minimum version1các cửa sổ python -m pip install SomePackage # latest version python -m pip install SomePackage==1.0.4 # specific version python -m pip install 'SomePackage>=1.0.4' # minimum version2 pip 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ụ, xem tài liệu tham khảo Liệt kê các góiĐể liệt kê các gói đã cài đặt Unix/macOS python -m pip install SomePackage # latest version python -m pip install SomePackage==1.0.4 # specific version python -m pip install 'SomePackage>=1.0.4' # minimum version3các cửa sổ python -m pip install SomePackage # latest version python -m pip install SomePackage==1.0.4 # specific version python -m pip install 'SomePackage>=1.0.4' # minimum version4 Để 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 python -m pip install SomePackage # latest version python -m pip install SomePackage==1.0.4 # specific version python -m pip install 'SomePackage>=1.0.4' # minimum version5các cửa sổ python -m pip install SomePackage # latest version python -m pip install SomePackage==1.0.4 # specific version python -m pip install 'SomePackage>=1.0.4' # minimum version6 Để hiển thị chi tiết về gói đã cài đặt Unix/macOS python -m pip install SomePackage # latest version python -m pip install SomePackage==1.0.4 # specific version python -m pip install 'SomePackage>=1.0.4' # minimum version7các cửa sổ python -m pip install SomePackage # latest version python -m pip install SomePackage==1.0.4 # specific version python -m pip install 'SomePackage>=1.0.4' # minimum version8 Để biết thêm thông tin và ví dụ, hãy xem và các trang tham khảo Tìm kiếm các góipip có thể tìm kiếm các gói PyPI bằng lệnh python -m pip freeze > requirements.txt python -m pip install -r requirements.txt09 Unix/macOS python -m pip install SomePackage # latest version python -m pip install SomePackage==1.0.4 # specific version python -m pip install 'SomePackage>=1.0.4' # minimum version9các cửa sổ py -m pip install SomePackage # latest version py -m pip install SomePackage==1.0.4 # specific version py -m pip install 'SomePackage>=1.0.4' # minimum version0 Truy 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ụ, xem tài liệu tham khảo 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ệnhpip hỗ trợ hoàn thành dòng lệnh trong bash, zsh và fish Để thiết lập cho bash py -m pip install SomePackage # latest version py -m pip install SomePackage==1.0.4 # specific version py -m pip install 'SomePackage>=1.0.4' # minimum version1 Để thiết lập cho zsh py -m pip install SomePackage # latest version py -m pip install SomePackage==1.0.4 # specific version py -m pip install 'SomePackage>=1.0.4' # minimum version2 Để thiết lập cho cá py -m pip install SomePackage # latest version py -m pip install SomePackage==1.0.4 # specific version py -m pip install 'SomePackage>=1.0.4' # minimum version3 Để thiết lập cho powershell py -m pip install SomePackage # latest version py -m pip install SomePackage==1.0.4 # specific version py -m pip install 'SomePackage>=1.0.4' # minimum version4 Ngoài ra, bạn có thể sử dụng trực tiếp kết quả của lệnh python -m pip freeze > requirements.txt python -m pip install -r requirements.txt30 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ạn py -m pip install SomePackage # latest version py -m pip install SomePackage==1.0.4 # specific version py -m pip install 'SomePackage>=1.0.4' # minimum version5 Cà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 py -m pip install SomePackage # latest version py -m pip install SomePackage==1.0.4 # specific version py -m pip install 'SomePackage>=1.0.4' # minimum version6các cửa sổ py -m pip install SomePackage # latest version py -m pip install SomePackage==1.0.4 # specific version py -m pip install 'SomePackage>=1.0.4' # minimum version7 Lưu ý rằng python -m pip freeze > requirements.txt python -m pip install -r requirements.txt31 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 py -m pip install SomePackage # latest version py -m pip install SomePackage==1.0.4 # specific version py -m pip install 'SomePackage>=1.0.4' # minimum version8các cửa sổ py -m pip install SomePackage # latest version py -m pip install SomePackage==1.0.4 # specific version py -m pip install 'SomePackage>=1.0.4' # minimum version9 Sau đó, để chỉ cài đặt từ cục bộ, bạn sẽ sử dụng và như vậy Unix/macOS python -m pip60các cửa sổ python -m pip61 Nâng cấp đệ quy “Chỉ khi cần thiết”python -m pip freeze > requirements.txt python -m pip install -r requirements.txt32 hiện có tùy chọn python -m pip freeze > requirements.txt python -m pip install -r requirements.txt33 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ợ
Chiến lược mặc định là python -m pip freeze > requirements.txt python -m pip install -r requirements.txt35. Điều này đã được thay đổi trong pip 10. 0 do tính chất vi phạm của python -m pip freeze > requirements.txt python -m pip install -r requirements.txt34 khi nâng cấp các phụ thuộc xung đột Điều quan trọng cần lưu ý là python -m pip freeze > requirements.txt python -m pip install -r requirements.txt38 ả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 python -m pip freeze > requirements.txt python -m pip install -r requirements.txt33 ảnh hưởng đến các yêu cầu gián tiếp (sự phụ thuộc của các yêu cầu trực tiếp) Ví dụ: giả sử py -m pip00 có một phụ thuộc, python -m pip freeze > requirements.txt python -m pip install -r requirements.txt02 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ó
Như một ghi chú lịch sử, một "bản sửa lỗi" trước đó để có được hành vi python -m pip freeze > requirements.txt python -m pip install -r requirements.txt35 là Unix/macOS python -m pip62các cửa sổ python -m pip63 Một đề xuất cho lệnh py -m pip12 đ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ấp Số lượt cài đặt của người dùngVới Trăn 2. 6 đã xuất hiện, điều đó có nghĩa là tất cả các bản phân phối Python đều hỗ trợ 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 biến. Có thể bật chế độ cài đặt này bằng cách chỉ định tùy chọn thành py -m pip13 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 py -m pip14, biến này cập nhật giá trị của py -m pip15 Để cài đặt “SomePackage” vào môi trường có py -m pip15 được tùy chỉnh thành ‘/myappenv’, hãy làm như sau Unix/macOS python -m pip64các cửa sổ python -m pip65 py -m pip17 tuân theo bốn quy tắc
Để làm cho các quy tắc rõ ràng hơn, đây là một số ví dụ Từ trong một py -m pip20 virtualenv (i. e. loại mặc định) Unix/macOS python -m pip66các cửa sổ python -m pip67 Từ trong một virtualenv py -m pip18 trong đó py -m pip24 đã được cài đặt trong virtualenv Unix/macOS python -m pip68các cửa sổ python -m pip69 Từ bên trong một con trăn thực, nơi mà py -m pip00 không được cài đặt trên toàn cầu Unix/macOS py -m pip install -r requirements.txt0các cửa sổ py -m pip install -r requirements.txt1 Từ bên trong một con trăn thực, trong đó py -m pip00 được cài đặt trên toàn cầu, nhưng không phải là phiên bản mới nhất Unix/macOS py -m pip install -r requirements.txt2các cửa sổ py -m pip install -r requirements.txt3 Từ bên trong một con trăn thực, nơi py -m pip00 được cài đặt trên toàn cầu và là phiên bản mới nhất Unix/macOS py -m pip install -r requirements.txt4các cửa sổ py -m pip install -r requirements.txt5 Đả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ạnNhư đã 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 thông qua py -m pip28, 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ày
Đ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à py -m pip install -r requirements.txt8 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 py -m pip30 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 py -m pip31 tiêu chuẩn py -m pip install -r requirements.txt6 Nế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 py -m pip install -r requirements.txt7 Nế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
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ừngThay đổ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 py -m pip36, bạn cần cài đặt py -m pip37 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ơn Những thay đổi quan trọng nhất đối với trình giải quyết là
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 py -m pip13, 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 py -m pip43 và sau đó là py -m pip44, có thể phiên bản của py -m pip37 bạn nhận được sẽ khác so với phiên bản bạn đã chạy py -m pip46 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ợ của mình đối với , lượt 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
Theo chính sách của chúng tôi, pip 20. 3 người dùng đang sử dụng Python 2 sẽ sử dụng trình phân giải kế thừa theo mặc định. Người dùng Python 2 nên nâng cấp lên Python 3 càng sớm càng tốt, vì trong pip 21. 0 vào tháng 1 năm 2021, pip hoàn toàn ngừng hỗ trợ Python 2 Cách nâng cấp và di chuyển
Thiết lập để kiểm tra với sự chú ý đặc biệt
Ví dụ để thửCài đặt
Cố gắng
Cho chúng tôi biết vềNhững điều cụ thể mà chúng tôi muốn nhận phản hồi về
Vui lòng cho chúng tôi biết thông qua khảo sát kiểm tra trình phân giải Dòng thời gian khấu haoChúng tôi lập kế hoạch cho quá trình chuyển đổi trình giải quyết tiến hành như sau, sử dụng và làm theo
Vì công việc này sẽ không thay đổi hành vi hiển thị của người dùng được mô tả trong tài liệu về pip, nên thay đổi này không thuộc phạm vi điều chỉnh của Bối cảnh và theo dõiNhư đã thảo luận trong thông báo của chúng tôi trên blog PSF, nhóm pip đang trong quá trình phát triển một "trình giải quyết phụ thuộc" mới (một phần của pip tìm ra những gì cần cài đặt dựa trên yêu cầu của bạn) Chúng tôi đang theo dõi quá trình triển khai của mình trong #6536 và bạn có thể xem các thông báo trên danh sách thông báo về bao bì có lưu lượng truy cập thấp và blog chính thức của Python |