24

私はこのようなプロジェクトを持っています:

├── 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
...

その中に、私のファイルにVirastar.pyは からのデータが必要data.untouchable.datです。これでプロジェクトをインストールするまでは正常に動作します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',
        ],
    }, 
    ...  
)

その後、プログラムを起動し、そのデータファイルが必要になると、次のエラーが返されます。

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

私のegg-infoソースでも、データファイルが見つかりません:

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

ここで何かを逃しましたか?

皆さん、ありがとうございました。

編集: init .pyに特別なものを追加する必要がありますか?

これを追加する必要があります: untouchable.dat を次のように使用しました:

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

3 に答える 3

21

私はdata_filesを使用しました

data_files = [('', ['negar/data/untouchable.dat'])],
于 2013-03-10T14:19:35.703 に答える
12

最初の問題は、データファイルをファイル付きのパッケージにインポートしなかったことMANIFEST.inです。私はそれを次のようにインポートしました:

include negar/data/*.dat

その後、私のデータファイルはパッケージのインストールですでにインポートされています。しかし、データファイルを開くのに間違いがあったため、Pythonはそれを見つけることができませんでした。この質問は 、パッケージサブディレクトリ内のPythonアクセスデータの正しい方法を見つけるのに役立ちました。現在、次のようなものを使用しています。

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()
于 2012-08-31T05:56:40.877 に答える
3

多分試してください:

package_data={'negar/data': ['data/*.dat']},
于 2012-08-30T07:38:20.363 に答える