2017-07-17 18 views
1

私のsetup.pyスクリプトにデータファイルを含める際に問題があります。次のように私のパッケージがセットアップされている:データファイルをsetup.pyに含める

my_package/ 
    setup.py 
    MANIFEST.in 

    my_package/ 
     __init__.py 
     access_data.py 

     data_files/ 
      my_data_file.csv 

私はそれがaccess_data.pyで読み取ることができるように、インストール時にmy_data_file.csvファイルを含めたいです。

setup(..., 
     packages=['my_package'], 
     package_data={'my_package': ['./my_package/data_files/my_data_file.csv']}, 
     include_package_data=True 
    ) 

私もMANIFEST.in内のファイルが含ま::私はsetuptoolspackage_dataキーワードを使用そうするために

recursive-include my_package/data_files * 

setup.pyは正常に動作しているようだし、エラーをスローしません。しかし、パッケージをインポートすると、my_data_file.csvが見つからないため、ファイルが見つかりませんでした。私は他のスタックオーバーフローの質問(特にthis one)を参照しようとしましたが、私が間違っていることを理解できません。 setup.pyに必要なデータファイルを含めるにはどうすればいいですか?あなたのケースでは

+0

大文字と小文字を区別しないファイルシステムですか? 'manifest.in'は本当に' MANIFEST.in'でなければなりません。しかし、MANIFEST.inがソース配布(sdist)のために使われているので、それはどうにも関係しません。 – phd

+0

まず、デバッグでは、大きな問題を多くの小さな問題に分割することが考えられます。ステップバイステップでそれをやりましょう。ステップ番号1:ディストリビューション(sdist、eggまたはwheel)に実際に 'my_data_file.csv'が含まれていることを確認します。もしそうでなければ、 'setup.py'を含めて修正してください。ステップ番号2: 'my_data_file.csv'がインストールされていることを確認します。ステップ3 - ファイルが存在していてもアクセスできない理由をデバッグします(ファイルへのパスが間違っていますか?) – phd

+0

あなたの行は 'package_data = {'my_package':['data_files/my_data_file.csv']}' ' ( 'my_package'パッケージの下に' my_package'ディレクトリはありません) –

答えて

0

それはsetup.pyさんpackage_dataに記載されている場合は(正確に)あなたは(それが自動的に含まれますよう)MANIFEST.inに含める必要はありません

、エラーがあなたのpackage_dataラインであり、

package_data={'my_package': ['data_files/my_data_file.csv']}, 

はまた、パッケージデータでキーが点線のモジュールパス(それのノーであることに注意してください:パスは、あなたのケースでは、それがあるべき名前空間のルート

に対して相対的ですしかし、このおもちゃの場合には関連するスーパー)。

関連する問題