2012-08-30 33 views
9

Ho un progetto come questo:file di dati metti in progetti python setup.py

├── CHANGES.txt 
├── LICENSE 
├── MANIFEST.in 
... 
├── docs 
│   └── index.rst 
├── negar 
│   ├── Negar.py 
│   ├── Virastar.py 
│   ├── Virastar.pyc 
│   ├── __init__.py 
│   ├── data 
│   │   ├── __init__.py 
│   │   └── untouchable.dat 
│   ├── gui.py 
│   ├── gui.pyc 
│   ├── i18n 
│   │   ├── fa_IR.qm 
│   │   └── fa_IR.ts 
│   └── negar.pro 
├── setup.py 
... 

e dentro che la mia lima Virastar.py bisogno di alcuni dati da data.untouchable.dat. funziona bene fino a quando installo il progetto con questo setup.py:

setup(
    ... 
    include_package_data=True, 
    packages = find_packages() + ['negar'], 
    package_dir={'negar': 'negar'}, 
    package_data={'negar': ['data/*.dat']}, 
    entry_points={ 
     'console_scripts': [ 
      'negar = negar.Negar:main', 
     ], 
    }, 
    ... 
) 

dopo che all'avvio del programma e quando è necessario che il file di dati che restituisce questo errore:

IOError: [Errno 2] No such file or directory: 'data/untochable.dat' 

anche nei miei egg-info fonti Non riesco a trovare alcun file di dati:

... 
negar/Negar.py 
negar/Virastar.py 
negar/__init__.py 
negar/gui.py 
negar/data/__init__.py 

ho perso qualcosa qui?

Grazie a tutti.

MODIFICA: Devo aggiungere qualcosa di speciale in init .py?

E devo aggiungere questo: ho usato untouchable.dat proprio come questo:

f = codecs.open('data/untouchable.dat', encoding="utf-8") 
+0

in python 2.7 hanno cambiato il modo per includere i file o MANIFEST.in qualcosa - non sono sicuro e non l'ho usato ma potrebbe essere una direzione – zenpoy

+0

Sono in Python 2.6! e per alcune ragioni non posso aggiornare ora! – Shahinism

risposta

6

Il primo problema è che non ho importare i miei file di dati nel pacchetto con il file MANIFEST.in. L'ho importato in questo modo:

include negar/data/*.dat 

Dopo che il mio file di dati è già stato importato con l'installazione del pacchetto. ma poiché ho avuto degli errori nei miei file di dati aperti, Python non è riuscito a trovarlo. Questa domanda mi ha aiutato a trovare la strada giusta Python Access Data in Package Subdirectory e ora io uso qualcosa di simile:

import os 
this_dir, this_filename = os.path.split(__file__) 
DATA_PATH = os.path.join(this_dir, "data", "data.txt") 
print open(DATA_PATH).read() 
2

magari provare:

package_data={'negar/data': ['data/*.dat']}, 
+0

No, non funziona di nuovo! stesso errore. – Shahinism

Problemi correlati