मैंने पाया कई स्रोतों (https://docs.python.org/3/distutils/sourcedist.html#specifying-the-files-to-distribute, http://blog.ionelmc.ro/2014/05/25/python-packaging/, http://blog.ionelmc.ro/2014/06/25/python-packaging-pitfalls/) है कि सुझाव है कि जिस तरह से एक अजगर पैकेज में डेटा फ़ाइलों को वितरित करने के लिए setuptools के include_package_data
विकल्प और एक MANIFEST.in
उपयोग करने के लिए है। मेरी पैकेज में फ़ाइलों इस प्रकार देखो, जैसेsetup.py वर्चुअलएन्व के अंदर डेटा फ़ाइलों को स्थापित करता है?
setup.py
setup( # ... include_package_data = True, # ...
फ़ाइल (उम्मीद अप्रासंगिक) elided के बाकी के साथ।
MANIFEST.IN
graft testdata include ChangeLog include README.rst include COPYING include COPYING.LESSER include tox.ini
जब मैं setup.py install
चलाने के लिए या एक virtualenv में पिप का उपयोग करें, मैं अजगर स्रोत खुद को फाइलों के साथ खत्म हो, लेकिन testdata/
बिना कहीं भी मैं इसे पा सकते हैं। मुझे लगता है कि यह मेरे पैकेजिंग में एक त्रुटि थी, सिवाय इसके कि जब मैं एक समान लेआउट के साथ एक और पैकेज लेता हूं, तो मुझे डेटा फाइलें भी नहीं मिलती हैं। अगर मैं उदाहरण पैकेज https://github.com/ionelmc/python-nameless के लिए भंडार क्लोन करता हूं और इसे setup.py install
का उपयोग करके स्थापित करता हूं, तो पैकेज lib/python3.4/site-packages/nameless-0.1.0-py3.4.egg/nameless/
निर्देशिका में स्थापित होता है। हालांकि, मैं वर्चुअलएन्व में कहीं भी डेटा फ़ाइलों या परीक्षणों को नहीं ढूंढ सकता। वे कहां खत्म हो रहे हैं? यह कैसे काम करना चाहिए?
इस प्रश्न पूछने के लिए मेरी प्रेरणा यह है कि एक परियोजना पर एक और योगदानकर्ता परीक्षण चाहता है, जिसके लिए डेटा फ़ाइलों की आवश्यकता होती है, जो एक पाइप इंस्टॉल से चलती है। क्या यह पहली जगह सही दृष्टिकोण है? ईमानदारी से मैं वास्तव में यकीन है कि क्या graft
करता है नहीं कर रहा हूँ -
उपयोग 'pkg_resources' पर
include_package_data = True
निर्दिष्ट करने के लिए आवश्यक है। इसी तरह के प्रश्न के लिए मेरा [उत्तर] (http://stackoverflow.com/a/34788912/3626079) देखें। – ziky