2013-02-16 29 views
6

मैंने पायथन (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 लिखने के लिए अपने आवेदन वितरित करने के लिए कर रहा हूँ। यह मेरे लिए नया है। पाई डॉक्टर पढ़ने और कुछ परीक्षण करने के बाद। कुछ प्रश्न सामने आते हैं:

  1. कैसे कर सकते हैं मैं (या मैं चाहिए) /lib/python/site-package के तहत मेरी जड़ पैकेज (MyApp) पैकेज?

    मेरी पीई फ़ाइल में, मैं रिश्तेदार पथ से संसाधन/आइकन का संदर्भ देता हूं। उदाहरण के लिए, foo.py में हो सकता है icons/a.png और gui/g1.py में वहाँ ../icons/e.png और इतने icons पर

  2. मैं कैसे पैकेज कर सकते हैं और resources निर्देशिका हो सकता है?

    ऐसा लगता है कि package_data और data_files दो निर्देशिकाओं को सही जगह पर कॉपी नहीं करेगा।

  3. क्या यह सही तरीका है?

    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/... 
    
  4. वहाँ अपने आवेदन संरचना की समस्या है?

    क्या उन संसाधनों/आइकन/जो भी फाइलें कुछ पायथन पैकेज पर जाएं, परियोजना रूट के तहत नहीं? ताकि setup.py में मैं package_data का उपयोग सही जगह पर कॉपी करने के लिए कर सकता हूं।

+1

आप पढ़ सकते हैं http://pythonhosted.org/distribute/setuptools.html#developer-s-guide है? वितरण दस्तावेज थोड़ा और विस्तृत है। –

+0

@MartijnPieters नहीं, मैंने इसे पढ़ा नहीं है। लिंक के लिए thx। मैं वहां अपने रास्ते पर हूं। – Kent

+0

@MartijnPieters मैंने गाइड पढ़ा। विशेष रूप से अनुभाग गैर-पैकेज डेटाफाइल [http://pythonhosted.org/distribute/setuptools.html#id17] ने उल्लेख किया है कि setuptools प्रोजेक्ट रूट के तहत सभी गैर-पैकेज-डेटा को स्थापित करेगा, जैसे कि distutils की तरह नहीं। यही वह है जो मैं चाहता हूं। लेकिन यह नहीं कहा कि कैसे स्थापित करें ... या मुझे कुछ याद आया? – Kent

उत्तर

1
from ez_setup import use_setuptools 
use_setuptools() 
from setuptools import setup 

setup(name="somename", 
     version="1.0", 
     description="description string", 
     long_description="""\ 
long description 
""", 
     author="Foo", 
     author_email="[email protected]", 
     url="http://nowhere.com", 
     include_package_data=True, 
     license="MIT", 
     packages=["gui", "logic"], 
     package_dir={ 
      "gui": "myApp/gui", 
      "logic": "myApp/logic", 
      }, 
     classifiers=[ 
     "Development Status :: 5 - Production/Stable", 
     "Topic :: Utilities", 
     "License :: OSI Approved :: MIT License" 
     ], 
     data_files=[ 
      ('/path/to/resources', ['resources/x.data', 'resources/y.data']), 
      ('/path/to/icons', ['myApp/icons/a.ico', 'myApp/icons/e.ico']) 
     ] 
    ) 
+0

आपका मतलब था 'पथ/टू/आइकन' मुझे उदाहरण के लिए मैन्युअल रूप से लिखना चाहिए '/ usr/lib/python2.7/site-packages/myApp-version-py2.7.egg/icons'? – Kent

+0

जहां भी आपकी फाइलें हैं। या तो रिश्तेदार या पूर्ण पथ –