2010-06-03 18 views
6

मैं एक पायथन परियोजना के लिए setup.py फ़ाइल लिख रहा हूं ताकि मैं इसे वितरित कर सकूं। इसका लक्ष्य अंततः एक .egg फ़ाइल बनाना है, लेकिन मैं इसे पहले distutils और नियमित .zip के साथ काम करने की कोशिश कर रहा हूं।मैं इन डेटा फ़ाइलों को पाइथन वितरण में distutils का उपयोग क्यों नहीं कर सकता?

यह ग्रहण Pydev परियोजना है और मेरी फ़ाइल संरचना कुछ इस तरह है:

ProjectName 
    src 
     somePackage 
     module1.py 
     module2.py 
     ... 
    config 
     propsFile1.ini 
     propsFile2.ini 
     propsFile3.ini 
    setup.py 

यहाँ मेरी setup.py कोड अब तक बताया गया है:

from distutils.core import setup 

setup(name='ProjectName', 
     version='1.0', 
     packages=['somePackage'], 
     data_files = [('config', ['..\config\propsFile1.ini', 
           '..\config\propsFile2.ini', 
           '..\config\propsFile3.ini'])] 
    ) 

जब मैं इस (sdist के रूप में के साथ चलाने एक कमांड लाइन पैरामीटर), एक .zip फ़ाइल सभी पायथन फ़ाइलों के साथ उत्पन्न होती है - लेकिन कॉन्फ़िगरेशन फ़ाइलें शामिल नहीं हैं। मैंने सोचा था कि यह कोड:

data_files = [('config', ['..\config\propsFile1.ini', 
            '..\config\propsFile2.ini', 
            '..\config\propsFile3.ini'])] 

इंगित करता है कि उन 3 निर्दिष्ट config फ़ाइलें ज़िप वितरण में एक "config" निर्देशिका में कॉपी किया जाना चाहिए। यह कोड कुछ भी पूरा क्यों नहीं कर रहा है? मैं क्या गलत कर रहा हूं?

(मैं भी config फाइल के रास्तों के साथ प्रयोग करना की कोशिश की है ... लेकिन कुछ भी नहीं मदद करने के लिए लगता है। चाहेंगे अजगर एक त्रुटि फेंक या चेतावनी अगर पथ गलत थी/फ़ाइल नहीं मिला था?)

उत्तर

1

मुझे अंत में यह संपूर्ण कॉन्फ़िगरेशन निर्देशिका को src फ़ोल्डर में स्थानांतरित करके काम करने के लिए मिला। इसका मतलब यह होगा कि मेरे पथ बंद हैं ... लेकिन जैसा कि मुझे किसी निर्देशिका का बैक अप लेने का कोई तरीका नहीं दिख रहा था (".. \" ने कोई फर्क नहीं पड़ता), मैं इस समाधान से चिपकने जा रहा हूं अभी के लिए।

6

एक MANIFEST.in फ़ाइल इस तरह बनाएँ:

include config\* 

(संपादित) अधिक जानकारी के लिए यहाँ देखो: http://docs.python.org/distutils/sourcedist.html#specifying-the-files-to-distribute

+0

धन्यवाद। मुझे निम्न त्रुटि मिलती है: 'चेतावनी:' config \ * '' से मेल खाने वाली कोई भी फाइल नहीं मिली। मैंने .. \ config \ * में बदलने की कोशिश की है लेकिन यह किसी भी विचार में मदद नहीं करता है ... कोई विचार? – froadie

+0

'\' और '*' के बीच एक जगह है। इसे हटाने का प्रयास करें? अन्यथा आगे स्लैश का उपयोग करने का प्रयास कर रहा है। मैंने आगे की स्लैश का उपयोग किया है, लेकिन क्योंकि आपने बैकस्लैश का उपयोग किया है, इसलिए मैंने '/' को '\' से बदल दिया है। हालांकि, मैंने पाया है कि विंडोज़ पर वास्तव में कोई समस्या नहीं है/इसका उपयोग नहीं करता है। कुछ भी नहीं, काम करता है, तो बस इसे में फ़ाइल नाम हार्डकोड, की तरह से देखना होगा कि आपने सही रास्ते पर हैं: config शामिल/propsFile1.ini config/propsFile2.ini # आदि ... – Umang

+0

शामिल अंतरिक्ष केवल था एसओ स्वरूपण की वजह से - जब मैंने उन्हें एक साथ रखा तो यह किसी कारण से स्लैश छुपाया। स्लैश को आगे बढ़ाने के लिए बदलना कोई फर्क नहीं पड़ता है ... पायथन स्वचालित रूप से इसे वापस उसी त्रुटि संदेश में परिवर्तित कर देता है। व्यक्तिगत फाइलों पर एक ही त्रुटि प्राप्त करें ... :(कोई सुराग क्या गलत है? क्या यह एक पथ समस्या है? – froadie

0

मैं तुम्हें के बैकस्लैश से बचने के लिए है लगता है फ़ाइल नाम; उदाहरण के लिए, '..\config\whatever' के बजाय, '..\\config\\whatever' लिखें, या कच्चे स्ट्रिंग सिंटैक्स का उपयोग करें: r'..\config\whatever'

+0

मैंने कोशिश की (यह उन चीजों में से एक है जिसका अर्थ है "मैंने कॉन्फ़िगरेशन फाइलों के पथों के साथ खेलने का भी प्रयास किया है") और यह कोई फर्क नहीं पड़ता ... – froadie

+0

Distutils हमेशा आगे slashes का उपयोग करता है। –