2012-08-30 14 views
9

ich ein Projekt wie dieses:add Datendateien Python Projekte 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 
... 

und im Inneren, dass meine Datei Virastar.py einige Daten aus data.untouchable.dat benötigen. es funktioniert gut, bis ich das Projekt mit diesem setup.py installieren:

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', 
     ], 
    }, 
    ... 
) 

nach, dass, wenn ich mein Programm beginnen und wann es ihn braucht, dass die Daten zurückgeben diesen Fehler Datei:

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

auch in meiner egg-info Quellen ich kann keine Datendatei finden:

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

habe ich hier etwas verpasst?

Danke euch allen.

EDIT: Muss ich etwas spezielles hinzufügen in init .py?

und ich habe diese hinzufügen: Ich habe untouchable.dat wie folgt aus:

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

in Python 2.7 sie verändert die Art und Weise Dateien zu MANIFEST.in aufzunehmen oder etwas - ich bin mir nicht sicher und habe es nicht benutzt, aber es könnte eine Richtung sein – zenpoy

+0

Ich bin in Python 2.6! und aus irgendwelchen Gründen kann ich jetzt nicht upgraden! – Shahinism

Antwort

6

Das erste Problem ist, dass ich nicht meine Datendatei importieren in das Paket mit MANIFEST.in Datei. Ich importierte es so:

include negar/data/*.dat 

Danach meine Datendatei bereits importiert mit meinem Paket installieren. Aber weil ich Fehler beim Öffnen meiner Dateien hatte, konnte Python sie nicht finden. Diese Frage hat mir geholfen, den richtigen Weg Python Access Data in Package Subdirectory und jetzt etwas, das ich wie folgt verwenden zu finden: gebrauchte

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

Vielleicht versuchen:

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

Nein, es funktioniert nicht mehr! gleicher Fehler – Shahinism

Verwandte Themen