मैंने पायथन (2.7) के साथ एक एप्लीकेशन लिखा है। संरचना लगता है:इस एप्लिकेशन संरचना के लिए setup.py कैसे लिखें?
kent$ tree myApp
myApp
|-- foo.py
|-- gui
| |-- g1.py
| |-- g2.py
| |-- g3.py
| `-- __init__.py
|-- icons
| |-- a.png
| `-- e.png
|-- logic
| |-- __init__.py
| |-- l1
| | |-- __init__.py
| | |-- la.py
| | `-- lc.py
| |-- l2
| | |-- __init__.py
| | |-- ld.py
| | `-- lf.py
| |-- logic1.py
| |-- logic2.py
| `-- logic3.py
|-- myApp.py
`-- resources
|-- x.data
`-- z.data
अब मैं के बारे में setup.py
लिखने के लिए अपने आवेदन वितरित करने के लिए कर रहा हूँ। यह मेरे लिए नया है। पाई डॉक्टर पढ़ने और कुछ परीक्षण करने के बाद। कुछ प्रश्न सामने आते हैं:
कैसे कर सकते हैं मैं (या मैं चाहिए)
/lib/python/site-package
के तहत मेरी जड़ पैकेज (MyApp) पैकेज?मेरी पीई फ़ाइल में, मैं रिश्तेदार पथ से संसाधन/आइकन का संदर्भ देता हूं। उदाहरण के लिए,
foo.py
में हो सकता हैicons/a.png
औरgui/g1.py
में वहाँ../icons/e.png
और इतनेicons
परमैं कैसे पैकेज कर सकते हैं और
resources
निर्देशिका हो सकता है?ऐसा लगता है कि
package_data
औरdata_files
दो निर्देशिकाओं को सही जगह पर कॉपी नहीं करेगा।क्या यह सही तरीका है?
packages = [''], package_dir = {'': ''}, package_data= {'': ['icons/*.*', 'resources/*.*']},
के बाद स्थापित करते हैं, मेरी फ़ाइलें हो जाएगा:
/usr/lib/python2.7/site-packages/icons/*.png /usr/lib/python2.7/site-packages/resources/*.data /usr/lib/python2.7/site-packages/gui/... /usr/lib/python2.7/site-packages/logic/...
वहाँ अपने आवेदन संरचना की समस्या है?
क्या उन संसाधनों/आइकन/जो भी फाइलें कुछ पायथन पैकेज पर जाएं, परियोजना रूट के तहत नहीं? ताकि setup.py में मैं
package_data
का उपयोग सही जगह पर कॉपी करने के लिए कर सकता हूं।
आप पढ़ सकते हैं http://pythonhosted.org/distribute/setuptools.html#developer-s-guide है? वितरण दस्तावेज थोड़ा और विस्तृत है। –
@MartijnPieters नहीं, मैंने इसे पढ़ा नहीं है। लिंक के लिए thx। मैं वहां अपने रास्ते पर हूं। – Kent
@MartijnPieters मैंने गाइड पढ़ा। विशेष रूप से अनुभाग गैर-पैकेज डेटाफाइल [http://pythonhosted.org/distribute/setuptools.html#id17] ने उल्लेख किया है कि setuptools प्रोजेक्ट रूट के तहत सभी गैर-पैकेज-डेटा को स्थापित करेगा, जैसे कि distutils की तरह नहीं। यही वह है जो मैं चाहता हूं। लेकिन यह नहीं कहा कि कैसे स्थापित करें ... या मुझे कुछ याद आया? – Kent