2015-07-14 22 views
18

Lợi thế của bánh xe trên trứng là rõ ràng (xem phần tại sao không trứng? https://pypi.python.org/pypi/wheel).Đóng gói Python: bánh xe vs tarball (tar.gz)

Tuy nhiên, điều đó không hoàn toàn rõ ràng đối với tôi lợi thế của việc sử dụng bánh xe trên tar.gz là gì. Tôi có thể thiếu một cái gì đó rõ ràng như "họ là như nhau". Như tôi thấy cả hai có thể được cài đặt trực tiếp bằng cách sử dụng pip (ngay cả trong Windows), có kích thước tương tự và khi đóng gói yêu cầu một nỗ lực tương tự. Nghe có vẻ như tôi là loại câu hỏi bạn có thể nhận được khi biện minh cho phương pháp đóng gói.

CHỈNH SỬA: Chỉ tìm thấy ví dụ trong đó tar.gz có thể tốt hơn bánh xe. CherryPy (https://pypi.python.org/pypi/CherryPy) chỉ cung cấp bánh xe cho Python 3.x, vì vậy nếu bạn muốn có một kho lưu trữ cục bộ để phục vụ CherryPy cho Python 2.7 và 3.x phụ thuộc, có vẻ như có ý nghĩa hơn để lưu trữ tarball. Điều này có đúng không? (Chỉ cần thêm một vài "trường hợp dựa trên" biện minh cho các cuộc thảo luận)

Trả lời

6

này đã trả lời nó cho tôi (trực tiếp từ PEP bánh xe):

Python cần một định dạng gói đó là dễ dàng hơn để cài đặt hơn sdist. Gói sdist của Python được xác định bởi và yêu cầu các đường biên và các hệ thống xây dựng, chạy mã tùy ý để xây dựng và cài đặt, và biên dịch lại, mã chỉ để có thể cài đặt vào một virtualenv mới. Hệ thống cài đặt xây dựng phức tạp này chậm, khó để giữ và cản trở sự đổi mới trong cả hệ thống và trình cài đặt xây dựng.

Cố gắng khắc phục các sự cố này bằng cách cung cấp giao diện đơn giản hơn giữa hệ thống xây dựng và trình cài đặt. Định dạng gói nhị phân bánh xe giải phóng các trình cài đặt không cần biết về hệ thống xây dựng , tiết kiệm thời gian bằng cách phân bổ thời gian biên dịch trên nhiều cài đặt, và loại bỏ nhu cầu cài đặt hệ thống xây dựng trong môi trường mục tiêu .

https://www.python.org/dev/peps/pep-0427/#rationale

Lưu ý tarball chúng ta đang nói về những gì được gọi là "sdists" ở trên.

1

Từ Python Wheels

Ưu điểm của bánh xe

• cài đặt nhanh hơn cho trăn tinh khiết và các gói mở rộng C có nguồn gốc.
• Tránh thực thi mã tùy ý để cài đặt. (Tránh thiết lập.py)
• Cài đặt tiện ích mở rộng C không yêu cầu trình biên dịch trên Windows hoặc OS X.
• Cho phép bộ nhớ đệm tốt hơn để thử nghiệm và tích hợp liên tục.
• Tạo tệp .pyc như một phần của quá trình cài đặt để đảm bảo chúng khớp với trình thông dịch trăn được sử dụng.
• Cài đặt nhất quán hơn trên nền tảng và máy.

Đảm bảo bánh xe được lắp đặt.

pip install wheel 
+0

là tất cả những điều điểm mà tarballs không thể làm? (Tôi có thể dễ dàng nói rằng bạn cần phần mềm "thêm" cho bánh xe trong máy linux trong khi tarball sẽ không ví dụ) –

+0

Tôi không phải lúc nào cũng biết những gì trong tarball, thậm chí bằng cách mở kho lưu trữ, với cùng mức độ mà tôi biết những gì trong một tập tin .whl đó là nghĩa vụ phải "chỉ làm việc", và đó là một lợi thế lớn với tôi khi sử dụng pip mà thường không "chỉ làm việc". – karel

+1

Bạn có thể đi sâu hơn một chút vào thời điểm đó không? như tôi thấy, khi tôi nhìn vào một bánh xe và một tarball, cả hai đều có gói nén bên trong và một số phép thuật bổ sung để đóng gói. Thậm chí tôi có thể nói rằng trong tarball tôi có thể thấy giấy phép ngay tại đó trong khi tôi không thể tìm thấy nó trong bánh xe (một điểm khá quan trọng khi làm softwr thương mại). Cả hai đều có thể che giấu điều gì đó không mong muốn, đó là lý do tại sao tôi không nhận được "công việc". (BTW, tôi thích bánh xe nhưng tôi cần một sự biện minh vững chắc) –

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