Sto cercando di creare un pacchetto di Python, e ho una struttura di directory simile a questo:MANIFEST.in, package_data e data_files chiarimenti?
mypkg/
├── __init__.py
├── module1
│ ├── x.py
│ ├── y.py
│ └── z.txt
└── module2
├── a.py
└── b.py
Poi ho aggiunto tutti i file in MANIFEST.in
e quando controllo l'archivio creato, aveva tutti i file.
Quando faccio python setup.py install
nello dist-packages/mypkg/module1
. Vedo solo i file Python e non z.txt
.
devo z.txt
sia MANIFEST.in
e setup.py
:
setup (
packages = [
'mypkg',
'mypkg.module1',
'mypkg.module2',
],
package_data = {
'mypkg': ['module1/z.txt']
},
include_package_data = True,
...
)
Ho provato ad aggiungere il file come data_files
pure ma che ha creato una directory in /usr/local
. Voglio tenerlo all'interno della directory del codice sorgente mentre il codice usa quei dati.
Ho letto i post elencati di seguito ma continuo a confondermi su quale sia il modo giusto per mantenere z.txt
nella posizione corretta dopo .
- MANIFEST.in ignored on "python setup.py install" - no data files installed?
- Installing data files into site-packages with setup.py
- http://blog.codekills.net/2011/07/15/lies,-more-lies-and-python-packaging-documentation-on--package_data-/
Aggiornamento: È stato risolto quando ho iniziato a utilizzare setuptools anziché distutils.core. Penso che sia stato qualche problema con le distutils che non erano d'accordo con manifest mentre setuptools funzionava senza alcuna modifica nel codice. Si consiglia di utilizzare setuptools in futuro. Usando il link [qui] [1]. [1]: http://peak.telecommunity.com/DevCenter/setuptools#developer-s-guide – Sourabh