Các gói Python và thư mục thông tin trứng


80

Ai đó có thể giải thích cách thư mục thông tin trứng được gắn với các mô-đun tương ứng của họ không? Ví dụ, tôi có như sau:

/usr/local/lib/python2.5/site-packages/quodlibet/
/usr/local/lib/python2.5/site-packages/quodlibet-2.0.egg-info/

Tôi giả sử rằng thư mục egg-info là để hiển thị mô-đun tương ứng với setuptools (easy_install), phải không? Nếu vậy, setuptools liên kết thư mục egg-info với thư mục module như thế nào?

Giả sử rằng tôi đang đi đúng hướng, và vì lợi ích của ví dụ ... Nếu tôi muốn hiển thị một gói hiện có của mình với setuptools, tôi có thể liên kết biểu tượng thư mục mô-đun và thư mục egg-info với trang web- thư mục gói? Tôi đã tự mình thử điều này, nhưng tôi không chắc chắn làm thế nào để kiểm tra xem gói có hiển thị với các công cụ cài đặt hay không. Thưởng điểm nếu bạn cũng có thể cho tôi biết cách kiểm tra điều này :)

Lý do chính mà tôi đang cố gắng hiểu tất cả điều này là vì tôi muốn liên kết biểu tượng một số mô-đun của mình thành các gói trang để tôi có thể thực hiện các thay đổi đối với chúng và hiển thị các thay đổi đối với các tập lệnh sử dụng chúng mà không cần phải cài đặt lại trứng từ PyPI sau mỗi lần thay đổi.


Bạn vẫn có một plugin quodlibet cho python ở đâu đó? Nghe thật tuyệt.
Peter Turner

@PeterTurner Đó có thể là quodlibet bản thân - nó được viết bằng Python
Florian Brucker

Câu trả lời:


71

Các thư mục .egg-info chỉ được tạo nếu --single-version-external-management được sử dụng để cài đặt trứng. "Thông thường", cài đặt một quả trứng sẽ tạo ra một thư mục (hoặc tệp zip), chứa cả mã và siêu dữ liệu.

pkg_resources (là thư viện đọc siêu dữ liệu) có một hàm requirecó thể được sử dụng để yêu cầu một phiên bản cụ thể của gói. Đối với "kiểu cũ", nhập thông thường, easy_install hack tệp .pth để đưa thư mục egg vào sys.path. Đối với --single-phiên bản-được quản lý bên ngoài, việc hack này là không cần thiết, bởi vì sẽ chỉ có một phiên bản duy nhất được cài đặt (bởi cơ sở hạ tầng nhịp độ của hệ thống, ví dụ như rpm hoặc dpkg). Thông tin quả trứng vẫn được bao gồm, đối với các ứng dụng sử dụng require(hoặc bất kỳ cơ chế ràng buộc pkg_resources nào khác).

Nếu bạn muốn cài đặt một gói bằng cách liên kết cứng, tôi khuyên bạn nên sử dụng "setup.py Develop". Đây là một lệnh từ setuptools không thực sự cài đặt quả trứng, nhưng làm cho nó có sẵn trên toàn trang web. Để làm như vậy, nó tạo một tệp liên kết trứng để pkg_resources có thể tìm thấy nó và nó thao tác một tệp .pth để quá trình nhập thông thường có thể tìm thấy nó.


26
Để đảo ngược những ảnh hưởng của setup.py develop, sử dụngsetup.py develop -u
CodeWarrior

Lưu ý rằng đó là một chữ thường -u. Chữ hoa -Ulàm một cái gì đó khác.
CGFoX
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.