2010-06-08 11 views
19

मैं distutils लिए नया हूँ .. मैं पैकेज के साथ कुछ डेटा फ़ाइलों को शामिल करने के लिए कोशिश कर रहा हूँ .. यहाँ मेरे कोड है ..अजगर distutils data_files शामिल नहीं है

from distutils.core import setup 

setup(name='Scrapper', 
     version='1.0', 
     description='Scrapper',  
     packages=['app', 'db', 'model', 'util'], 
     data_files=[('app', ['app/scrapper.db'])]  
    ) 

ज़िप python setup.py sdist को क्रियान्वित करने के बाद बनाई गई फ़ाइल scrapper.db फ़ाइल शामिल नहीं है। मेरे पास ऐप निर्देशिका में scrapper.db फ़ाइल है ..

सहायता के लिए धन्यवाद।

+2

आपके प्रश्न से संबंधित एक टिप्पणी: मैं आपको एक शीर्ष-स्तरीय पैकेज नाम का उपयोग करने की सलाह दूंगा, उदाहरण के लिए स्क्रैपर, चार पैकेजों के लिए चार बहुत व्यापक रूप से उपयोग किए जाने वाले नामों का उपयोग करने के बजाय। –

+0

आप किस पायथन संस्करण का उपयोग कर रहे हैं? –

उत्तर

21

आपको शायद फ़ाइल जोड़ने की आवश्यकता है जिसमें "include app/scrapper.db" है।

यह distutils में एक बग है जो इसे आवश्यक बनाता है: data_files या package_data में कुछ भी उत्पन्न MANIFEST में स्वचालित रूप से शामिल किया जाना चाहिए। लेकिन पाइथन 2.6 और इससे पहले, ऐसा नहीं है, इसलिए आपको इसे MANIFEST.in में शामिल करना होगा।

बग पाइथन 2.7 में तय किया गया है।

+3

मुझे अभी भी पाइथन 2.7.1+ के साथ एक ही समस्या का सामना करना पड़ रहा है। मैंने पाया [यह बग रिपोर्ट] (http://bugs.python.org/issue2279) लेकिन मुझे समझ में नहीं आता कि स्थिति 'प्रतिबद्ध/अस्वीकार क्यों हुई है'। MANIFEST.in का उपयोग करने के बिना वापस गिरने के बिना हल करने के लिए कोई मार्गदर्शन? धन्यवाद! – mac

+1

स्थिति बगैर/अस्वीकार की गई स्थिति निश्चित बग के साथ प्रयोग की जाती है। –

1

मैनिफ़ेस्ट को हटाने का प्रयास करें, इस तरह आस-पास को पुन: उत्पन्न करने के लिए मजबूर किया जाएगा।

नोट: मैं अजगर 3.x का उपयोग कर रहा हूं, इसलिए मुझे नहीं पता कि यह 2.x के साथ काम करता है या नहीं।

+0

आपने मेरा जवाब गलत समझा। मैं एक मैनिफ़ेस्ट फ़ाइल बनाने की अनुशंसा नहीं करता हूं। मैं "MANIFEST.in", मैनिफेस्ट टेम्पलेट फ़ाइल के बारे में बात कर रहा हूं। यह आपको स्वचालित रूप से जेनरेट किए गए मैनिफ़ेस्ट में जो शामिल है उसे _add_ करने की अनुमति देता है। 2.6, डेटा_फाइल और पैकेज_डेटा प्रविष्टियों तक सभी पायथन संस्करणों में distutils में एक बग की वजह से स्वचालित रूप से जेनरेट किए गए MANIFEST में शामिल नहीं होते हैं जबतक कि आप उन्हें MANIFEST.in फ़ाइल में नहीं जोड़ते। –

+0

@ करल मेयर मैं आपके द्वारा किए गए या नहीं कहने पर टिप्पणी नहीं कर रहा था। मैं केवल उस उत्तर का संदर्भ देना चाहता था जो उस भाग पर अधिक विस्तार से चला गया (जो मेरा मुख्य बिंदु नहीं था।) और मैंने आम तौर पर मैनिफ़ेस्ट का उपयोग किया; मुझे शायद MANIFEST.in लिखा होगा (मैंने इसे तब से बदल दिया है।) क्षमा करें अगर मैंने आपके उत्तर को गलत तरीके से प्रस्तुत किया है। – Matthew

+0

दुर्भाग्यवश, आपका संपादित उत्तर अब गलत है:/distutils आपके लिए MANIFEST उत्पन्न करता है चाहे आप MANIFEST.in प्रदान करते हैं या नहीं। MANIFEST.in आपको जेनरेट की गई मैनिफ़ेस्ट फ़ाइल की सामग्री में जोड़ने की अनुमति देता है। –

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