2010-01-12 34 views
383

Tôi mới sử dụng Python và tôi đang cố gắng hiểu các gói của nó hoạt động như thế nào. Có lẽ "trứng" là một loại cơ chế đóng gói nào đó, nhưng cái gì sẽ là tổng quan nhanh về vai trò của chúng và có thể một số thông tin về lý do chúng hữu ích và cách tạo chúng?Trứng Python là gì?

Trả lời

423

Lưu ý: Egg packaging has been superseded by Wheel packaging.

Cùng khái niệm như là một file .jar trong Java, nó là một tập tin .zip với một số tập tin siêu dữ liệu đổi tên .egg, để phân phối mã như bó.

Specifically: The Internal Structure of Python Eggs

A "Python trứng" là một cấu trúc logic thể hiện việc phát hành một phiên bản cụ của một dự án Python, bao gồm mã của nó, nguồn lực, và siêu dữ liệu. Có nhiều định dạng có thể được sử dụng để mã hóa vật lý một quả trứng Python và các định dạng khác có thể được phát triển. Tuy nhiên, nguyên tắc chính của trứng Python là chúng có thể được khám phá và có thể nhập. Đó là, nó có thể là một ứng dụng Python để dễ dàng và hiệu quả tìm ra những gì trứng có mặt trên một hệ thống, và để đảm bảo rằng nội dung trứng mong muốn được nhập khẩu.

Định dạng .egg là rất phù hợp để phân phối và dễ dàng gỡ bỏ hoặc nâng cấp mã, kể từ khi dự án là chủ yếu khép kín trong một thư mục duy nhất hoặc tập tin, unmingled với mã hoặc tài nguyên nào khác dự án. Nó cũng làm cho nó có thể có nhiều phiên bản của một dự án được cài đặt đồng thời, chẳng hạn như các chương trình riêng lẻ có thể chọn các phiên bản mà chúng muốn sử dụng.

32

Tệp .egg là định dạng phân phối cho gói Python. Nó chỉ là một thay thế cho phân phối mã nguồn hoặc Windows exe. Nhưng lưu ý rằng đối với tinh khiết Python, tệp .egg hoàn toàn đa nền tảng.

Bản thân tệp .egg về bản chất là tệp .zip. Nếu bạn thay đổi phần mở rộng thành “zip”, bạn có thể thấy rằng nó sẽ có các thư mục bên trong kho lưu trữ.

Ngoài ra, nếu bạn có một tập tin .egg, bạn có thể cài đặt nó như là một gói sử dụng easy_install

Ví dụ: Để tạo một tập tin .egg cho một thư mục nói mymath mà tự nó có thể có nhiều kịch bản python, làm như sau bước:

# setup.py 
from setuptools import setup, find_packages 
setup(
    name = "mymath", 
    version = "0.1", 
    packages = find_packages() 
    ) 

Sau đó, từ nhà ga làm:

$ python setup.py bdist_egg 

này sẽ tạo ra rất nhiều kết quả đầu ra, nhưng khi nó được hoàn thành, bạn sẽ thấy rằng bạn có ba thư mục mới: build, quận, và mymath.egg-info. Các thư mục duy nhất mà chúng tôi quan tâm là quận thư mục mà bạn sẽ tìm thấy tập tin .egg của bạn, mymath-0.1-py3.5.egg với python mặc định của bạn (cài đặt) số phiên bản (mỏ ở đây: 3.5)

Nguồn: Python library blog

0

"Trứng" là một định dạng phân phối có thể nhập một tệp cho các dự án liên quan đến Python.

"The Quick Guide to Python Eggs" ghi chú rằng "Trứng là để Trăn như Chum là Java ..."

Trứng thực sự là giàu hơn lọ; chúng chứa siêu dữ liệu thú vị như chi tiết cấp phép, phụ thuộc phát hành, v.v.

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