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
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.
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
"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.
- 1. Cách tạo tệp trứng Python
- 2. Bất lợi của trứng Python?
- 3. Hướng dẫn đơn giản để tạo cấu trúc gói Python và trứng là gì?
- 4. Python: Tại sao một số gói được cài đặt như trứng và một số là "thư mục trứng"?
- 5. Cài đặt trứng Python dưới PyPy
- 6. Tại sao easy_install trích xuất một số trứng trăn và không phải là trứng khác?
- 7. đẻ trứng và chờ đợi tiến trình con bằng Python
- 8. 'In' bằng Python là gì?
- 9. 'setup.py test' vị trí cài đặt trứng?
- 10. Cách cập nhật tệp trong trứng trăn
- 11. Quy trình đẻ trứng PHP
- 12. có cách nào để nhập khẩu một quả trứng Python từ bộ nhớ, nhưng không phải là đĩa?
- 13. "Ràng buộc lambda" trong Python là gì?
- 14. Nâng cao trong Python là gì?
- 15. Một InstrumentedList trong Python là gì?
- 16. Nguyên tắc EAFP trong Python là gì?
- 17. Nhập gv trong python là gì?
- 18. Hàm dir() của Python là gì?
- 19. Python song song: Gọi lại là gì?
- 20. Chú thích hàm Python là gì?
- 21. Mặc định __hash__ trong python là gì?
- 22. '~' có nghĩa là gì trong python?
- 23. Biểu thức bằng Python là gì?
- 24. Mô-đun Python đông lạnh là gì?
- 25. Python tương đương với Perlbrew là gì?
- 26. Làm thế nào để cấm easy_install từ trứng nén?
- 27. Không thể đẻ trứng ứng dụng
- 28. python: ví dụ đơn giản cho một quả trứng trăn với một tệp nguồn một tệp?
- 29. Ném trứng từ một tòa nhà
- 30. Làm cách nào để tạo trứng Python từ các gói nguồn gián đoạn?