Gist: Cách tốt nhất để phát hiện trong setup.py rằng chúng ta đang được kích hoạt bởi pip install package
là gì?phát hiện pip trong setup.py
Bối cảnh: Tôi có một gói (ràng buộc cho thư viện C), mà tôi cung cấp trứng bao gồm chính thư viện đó. Trong readme/tài liệu của tôi, tôi lưu ý rằng gói này là 'easy_install-able' trên một số nền tảng nhất định. Khi xây dựng từ nguồn (ví dụ: với pip), chính thư viện đó là phụ thuộc xây dựng. Vấn đề là tôi thường xuyên nhầm lẫn người dùng nhầm lẫn rằng pip là một thay thế đầy đủ cho easy_install và mong đợi pip install package
để làm việc trên các hệ thống không có thư viện hoặc thậm chí không có trình biên dịch, nơi trứng là những gì họ thực sự muốn.
Tôi muốn phát hiện rằng bản dựng đã được kích hoạt bởi pip, vì vậy tôi có thể cung cấp thông báo "pip! = Easy_install" thân thiện nếu nó không thành công do thiếu thư viện. Nó không cần phải hoàn hảo, chỉ cần nắm bắt các trường hợp phổ biến nhất của pip install package
. Về thanh tra, nó không có vẻ như có một cách đặc biệt mạnh mẽ để làm điều này, và tốt nhất mà tôi đã đưa ra là:
probably_using_pip = '--single-version-externally-managed' in sys.argv
Có cách nào tốt hơn (hoặc tốt hơn nữa, chính thức) để phát hiện pip từ setup.py?
Tại sao thông báo lỗi cần phải khác biệt so với khi chạy "setup.py install" khi thư viện không có mặt? – joeforker
Khi bạn chạy 'setup.py install', chắc chắn bạn đang xây dựng từ nguồn. Khi bạn chạy 'pip install' mọi người có thể mong đợi các tập tin nhị phân nhưng không nhận được chúng (người dùng thực sự không hiểu sự khác biệt giữa pip và easy_install). Câu hỏi này không còn liên quan đến trường hợp cụ thể của tôi, bởi vì pip 1.5 hỗ trợ bánh xe theo mặc định. – minrk
Một số ngữ cảnh khác: tại thời điểm yêu cầu (hai năm trước), gói của tôi thường được cài đặt trên các máy không có trình biên dịch và pip không hỗ trợ định dạng nhị phân. easy_install làm việc tốt, nhưng pip sẽ không biên dịch được. Bởi vì điều này, tôi muốn thông báo cho những người có 'pip install' thất bại mà easy_install có thể thích hợp hơn. – minrk