2010-09-08 27 views
24

Làm cách nào để chỉ định phụ thuộc tùy chọn trong tệp yêu cầu pip? Theo các pip documentation điều này là có thể, nhưng tài liệu không giải thích làm thế nào để làm điều đó và tôi không thể tìm thấy bất kỳ ví dụ trên web.Phụ thuộc tùy chọn trong tệp yêu cầu pip

+0

Great Q. - q có liên quan. sẽ là làm thế nào để xác định một tập hợp các yêu cầu cần được cài đặt nhưng không nên xem xét việc cài đặt một sự thất bại nếu chúng không thể được cài đặt. Tôi có một gói mà hoạt động tốt hơn nếu numpy được cài đặt nhưng có một dự phòng nếu numpy không thể biên dịch vì lý do nào. Tôi rất thích làm cho nó một mặc định cài đặt nhưng tùy chọn nếu yêu cầu thất bại. –

Trả lời

26

Thay vì chỉ định phụ thuộc tùy chọn trong cùng một tệp với yêu cầu khó, bạn có thể tạo optional-requirements.txtrequirements.txt.

Để xuất gói môi trường hiện tại của bạn vào một tập tin văn bản, bạn có thể làm điều này:

pip freeze > requirements.txt 

Nếu cần thiết, sửa đổi các nội dung của requirements.txt thể hiện chính xác phụ thuộc của dự án của bạn. Sau đó, để cài đặt tất cả các gói trong tập tin này, hãy chạy:

pip install -U -r requirements.txt 

-U nói pip để nâng cấp gói lên phiên bản mới nhất, và -r nói với nó để cài đặt tất cả các gói trong requirements.txt.

+1

Tôi nghĩ bạn đã hiểu nhầm câu hỏi. 'pip freeze' sẽ chỉ in ra tất cả các phụ thuộc. Những gì tôi muốn biết là làm thế nào tôi có thể xác định phụ thuộc nào được yêu cầu và đó là tùy chọn trong tệp yêu cầu pip. – del

+0

Tôi thấy tài liệu tham khảo trong tài liệu mà tôi nghĩ bạn đang đề cập đến, nhưng tôi không chắc là có thể trong một tệp yêu cầu ... mặc dù bạn có thể có hai tệp phụ thuộc, một tệp liệt kê các phụ thuộc tùy chọn. Tôi sẽ sửa đổi câu trả lời của tôi –

+0

Cảm ơn - đây là phương pháp tôi đã tham gia, nhưng đọc một chút về các phụ thuộc tùy chọn trong tài liệu khiến tôi nghĩ rằng có thể có cách tốt hơn để làm điều đó. – del

2

Bạn hiểu nhầm tài liệu; chúng không rõ ràng như chúng có thể. Điểm trong tài liệu là với một tệp yêu cầu, bạn có thể thoải mái chỉ định toàn bộ gói làm việc được đề xuất của mình, bao gồm cả các phụ thuộc cần thiết và các gói tùy chọn. Bạn có thể thêm ý kiến ​​(dòng bắt đầu bằng #) để phân biệt hai dòng với con người, nhưng pip không phân biệt. Bạn cũng có thể có hai tệp yêu cầu, như Daniel gợi ý.

+5

Bạn không thực sự tự do bao gồm cả phụ thuộc bắt buộc và tùy chọn trong tệp yêu cầu vì 'pip install' sẽ ngay lập tức hủy bỏ nếu bất kỳ gói nào trong tệp không cài đặt được. Dường như việc sử dụng hai tệp yêu cầu riêng biệt là giải pháp chính xác duy nhất. – del

4

Năm 2015 PEP-0508 định nghĩa một cách để xác định phụ thuộc tùy chọn trong requirements.txt:

requests[security] 

Điều đó có nghĩa rằng yourpackage nhu cầu requests cho tùy chọn bảo mật của nó. Bạn có thể cài đặt như sau:

pip install yourpackage[security] 
+0

Bạn có thể định cấu hình một trong các "phần bổ sung" này bằng cách sử dụng đối số ['extras_require'] (http://setuptools.readthedocs.io/en/latest/setuptools.html#declaring-extras-optional-features-with-their-own -dependencies) cho hàm 'setup' trong' setuptools'. Bạn có thể thấy trong [yêu cầu setup.py] (https://github.com/requests/requests/blob/3c1d36b827417fdeaf5a1c106129de30dac371d7/setup.py#L98) cách cấu hình bổ sung 'bảo mật' "được định cấu hình. –

Các vấn đề liên quan