2015-10-03 14 views
14

मैं गैर-पायथन फ़ाइलों सहित setup.py पर विभिन्न विकल्पों के चारों ओर घूम रहा हूं, और वे अंतर्ज्ञानी से कुछ हद तक कम हैं। मैं bdist_wheel द्वारा उत्पन्न पैकेज को वास्तव में देखने के लिए सक्षम होना चाहता हूं - यह सुनिश्चित करने के लिए इतना नहीं है कि यह काम करेगा (यही परीक्षण है) लेकिन मेरे पास विकल्पों के प्रभाव देखने के लिए सेट।मैं पाइथन व्हील के अंदर फ़ाइलों को कैसे सूचीबद्ध करूं?

मैं .whl में निहित फ़ाइलों को कैसे सूचीबद्ध करूं?

+2

बहुत यकीन है [यह एक ज़िप फ़ाइल है] (https://pypi.python.org/pypi/wheel)। –

+0

"यह सुनिश्चित करने के लिए इतना नहीं है कि यह काम करेगा": कुछ चेकलिस्ट आइटम परीक्षण के लिए असामान्य विषय हैं, उदाहरण के लिए यह सुनिश्चित करना कि बाह्य सी पुस्तकालयों के साथ कोई अतिरिक्त लाइसेंस फाइलें जो व्हील के भीतर संकलित रूप में शामिल हैं। इन वस्तुओं को पहिया की सामग्री सूचीबद्ध करके सबसे अच्छी जांच की जाती है। यह भी देखें: https://stackoverflow.com/questions/24347450/how-do-you-add-additional-files-to-a-wheel –

उत्तर

16

आप व्हील फ़ाइल को एक्सटेंशन को .zip में बदल सकते हैं और फिर किसी भी अन्य ज़िप फ़ाइल की तरह सामग्री निकाल सकते हैं।

से PEP 427

एक पहिया

विशेष रूप से फ़ॉर्मेट फ़ाइल नाम और .whl एक्सटेंशन के साथ एक ज़िप प्रारूप संग्रह है।

उदाहरण

Django python package एक पहिया फ़ाइल है। एक उदाहरण के रूप में Django-1.8.4-py2.py3-none-any.whl आज़माएं। उनके पैकेज में गैर-पायथन फाइलें होती हैं यदि आप देखना चाहते थे कि वे संग्रह में कहां संग्रहीत होते हैं।

कोड

निम्नलिखित कोड को Python2 और python3 में सही ढंग से काम करता है। यह किसी भी व्हील पैकेज में फ़ाइलों को सूचीबद्ध करेगा। मैं एक उदाहरण के रूप में पेप 8 व्हील पैकेज का उपयोग करता हूं।

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

आउटपुट

['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

ठीक है, अब मुझे गूंगा लगता है। यह पूरी तरह से काम करता है, धन्यवाद। – Andrew

+3

@ एंड्रयू कभी गूंगा महसूस नहीं करते हैं अगर आप कुछ नया सीख रहे हैं! –

1

unzip -l dist/*.whl (credit)

के बाद से एक पहिया एक ज़िप फ़ाइल, unzip काम करता है। फ़ाइल नाम के लिए टैब पूर्णता काम नहीं करेगी, जब तक कि एक्सटेंशन का नाम बदलकर zip हो। from zipfile import ZipFile दृष्टिकोण केवल सिस्टम में पाइथन की उपस्थिति मानता है, लेकिन खोल में एक-लाइनर अधिक व्यावहारिक है।

संबंधित मुद्दे