2016-02-01 15 views
5

मैंने पाया कई स्रोतों (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 करता है नहीं कर रहा हूँ -

+0

उपयोग 'pkg_resources' पर include_package_data = True निर्दिष्ट करने के लिए आवश्यक है। इसी तरह के प्रश्न के लिए मेरा [उत्तर] (http://stackoverflow.com/a/34788912/3626079) देखें। – ziky

उत्तर

0

मेरे समझ है कि आप बस

include testdata

बजाय graft यह ing चाहिए।

इसके अलावा मैं नहीं मानता कि यह आपके डेटा फ़ाइलों को खोजने के लिए सब

+0

'शामिल' में पैटर्न से मेल खाने वाली फाइलें शामिल हैं, निर्देशिका नहीं। जहां तक ​​मुझे पता है, यह केवल विरासत दस्तावेज में समझाया गया है: https://docs.python.org/3/distutils/commandref.html। (यदि यह गैर-विरासत दस्तावेज में समझाया गया है, तो मुझे पता नहीं है कि।) 'भ्रष्टाचार' में संपूर्ण निर्देशिकाएं शामिल हैं। मेरे MANIFEST.in और उदाहरण पैकेज में, 'शामिल' का उपयोग अलग-अलग फ़ाइलों के लिए किया जाता है, और मैं उन फ़ाइलों को वर्चुअलएव में नहीं ढूंढ सकता। मैंने 'testdata /' पर भी 'रिकर्सिव-इन' शामिल करने का प्रयास किया है, और यह भी काम नहीं करता है। – ceridwen

+0

मुझे कल एक समान समस्या का सामना करना पड़ रहा था। पहले मैं मैन्युअल रूप से '/ etc/nepi' में कॉपीिंग और लाइसेंस संग्रहीत कर रहा था लेकिन वह वर्चुअलएन्व के तहत तोड़ रहा था। अब (देखें [मेरे गिट रेपो यहाँ] (http://git.onelab.eu/?p=nepi.git;a=tree)) चीजें ठीक चलती हैं। अगर आपको शामिल फाइलों में से कोई भी दिखाई नहीं देता है, तो मुझे संदेह है कि कुछ और गलत हो रहा है। इसके अलावा मैंने निर्देशिका में इस्तेमाल किए गए 'शामिल' के उदाहरण देखे हैं लेकिन इसमें कोई सबूत नहीं है कि यह काम करेगा। मैं सहमत हूं कि इस पर दस्तावेज बिल्कुल स्पष्ट नहीं है :) – parmentelat

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