2015-10-03 19 views
14

Tôi chọc xung quanh các tùy chọn khác nhau để setup.py cho bao gồm các file không trăn, và họ đang hơi ít hơn trực quan. Tôi muốn để có thể kiểm tra các gói được tạo ra bởi bdist_wheel để xem những gì thực sự trong nó - không quá nhiều để đảm bảo rằng nó sẽ làm việc (đó là những gì các bài kiểm tra được cho) nhưng để xem những ảnh hưởng của các tùy chọn Tôi đã bộ.Làm cách nào để liệt kê các tệp trong bánh xe python?

Làm thế nào để liệt kê các tập tin chứa trong một .whl?

+2

Đẹp, chắc chắn [đó là một file zip] (https://pypi.python.org/pypi/wheel). –

+0

Về "không quá nhiều để đảm bảo rằng nó sẽ hoạt động": một số mục danh sách kiểm tra là các đối tượng bất thường để kiểm tra, ví dụ như đảm bảo rằng bất kỳ tệp giấy phép bổ sung nào đi kèm với thư viện C bên ngoài được bao gồm trong biểu mẫu được biên dịch trong bánh xe. Các mục này được kiểm tra tốt nhất bằng cách liệt kê nội dung của bánh xe. Xem thêm: https://stackoverflow.com/questions/24347450/how-do-you-add-additional-files-to-a-wheel –

Trả lời

16

Bạn có thể lấy các tập tin bánh xe thay đổi phần mở rộng để .zip và sau đó trích xuất nội dung giống như bất kỳ tập tin zip khác.

từ PEP 427

Một bánh xe là một kho lưu trữ ZIP định dạng với một tên tập tin định dạng đặc biệt và phần mở rộng .whl.

Ví dụ

các Django python package có một file bánh xe. Hãy thử ví dụ Django-1.8.4-py2.py3-none-any.whl. Gói của họ chứa các tệp không phải python nếu bạn muốn xem nơi chúng sẽ được lưu trữ trong kho lưu trữ.

Các mã sau đây hoạt động chính xác trong python2 và python3. Nó sẽ liệt kê các tập tin trong bất kỳ gói bánh xe nào. Tôi sử dụng gói bánh xe pep8 làm ví dụ.

from zipfile import ZipFile 
path = '/tmp/pep8-1.7.0-py2.py3-none-any.whl' 
print(ZipFile(path).namelist()) 

Output

['pep8.py', 'pep8-1.7.0.dist-info/DESCRIPTION.rst', 'pep8-1.7.0.dist-info/entry_points.txt', 'pep8-1.7.0.dist-info/metadata.json', 'pep8-1.7.0.dist-info/namespace_packages.txt', 'pep8-1.7.0.dist-info/top_level.txt', 'pep8-1.7.0.dist-info/WHEEL', 'pep8-1.7.0.dist-info/METADATA', 'pep8-1.7.0.dist-info/RECORD'] 
+0

Vâng, bây giờ tôi cảm thấy câm. Điều đó hoạt động hoàn hảo, cảm ơn. – Andrew

+3

@Andrew không bao giờ cảm thấy câm nếu bạn đang học một cái gì đó mới! –

1

unzip -l dist/*.whl (credit)

Kể từ khi một bánh xe là một file ZIP, unzip công trình. Tab hoàn thành cho tên tập tin sẽ không làm việc, trừ trường hợp việc gia hạn được đổi tên thành zip. Cách tiếp cận from zipfile import ZipFile giả chỉ sự hiện diện của Python trong hệ thống, nhưng một lớp lót trong vỏ là thực tế hơn.

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