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:
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 essereicons/a.png
e ingui/g1.py
ci potrebbero essere../icons/e.png
e così viacome posso confezionare
icons
eresources
directory?Sembra che
package_data
edata_files
non copieranno le due directory nel posto giusto.è 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/...
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.
Hai letto http://pythonhosted.org/distribute/setuptools.html#developer-s-guide? La documentazione distribuita è un po 'più dettagliata. –
@MartijnPieters no, non l'ho letto. grazie per il link. Sto arrivando. – Kent
@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