2013-02-16 15 views
6

Ho scritto un'applicazione con python (2.7). La struttura si presenta come:come scrivere setup.py per questa struttura applicativa?

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 

Ora che sto per scrivere un setup.py per distribuire la mia applicazione. Sono nuovo in questo. Dopo aver letto il py doc e fatto alcuni test. alcune domande venire:

  1. come posso (o dovrei) confezionare il mio pacchetto di root (myApp) sotto /lib/python/site-package?

    poiché nel mio file py, faccio riferimento a risorse/icone per percorso relativo. per esempio, in foo.py ci potrebbe essere icons/a.png e in gui/g1.py ci potrebbero essere ../icons/e.png e così via

  2. come posso confezionare icons e resources directory?

    Sembra che package_data e data_files non copieranno le due directory nel posto giusto.

  3. è questo il modo giusto?

    packages = [''], 
    package_dir = {'': ''}, 
    package_data= {'': ['icons/*.*', 'resources/*.*']}, 
    

    dopo l'installazione, i miei file saranno:

    /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. C'è problema della mia struttura dell'applicazione?

    le risorse/icone/i file che si trovano in determinati pacchetti Python, non nella radice del progetto? in modo che in setup.py posso usare package_data per copiarli nel posto giusto.

+1

Hai letto http://pythonhosted.org/distribute/setuptools.html#developer-s-guide? La documentazione distribuita è un po 'più dettagliata. –

+0

@MartijnPieters no, non l'ho letto. grazie per il link. Sto arrivando. – Kent

+0

@MartijnPieters Ho letto la guida. in particolare la sezione Non-Package DataFiles [http://pythonhosted.org/distribute/setuptools.html#id17] ha menzionato che setuptools installerà tutti i dati non-pacchetto in ProjectRoot, non come distutils. questo è quello che voglio avere. Ma non ha detto come installare ... o mi sono perso qualcosa? – Kent

risposta

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

intendevi il 'percorso/a/icone' dovrei scrivere manualmente ad esempio'/usr/lib/python2.7/site-packages/myApp-version-py2.7.egg/icons'? – Kent

+0

è ovunque tu abbia i tuoi file. percorsi relativi o assoluti –

Problemi correlati