2012-03-14 22 views
3

私は大量の(20Mbを超える)多数のデータファイルに依存する新しいPythonパッケージを開発中です。具体的には、ライブラリーは、実行時にデータ・ファイルがdata/ディレクトリーにあることを予期します。_large_データ依存性を持つpythonパッケージを配布するには

現在、私は配布パッケージの一部として "data"ディレクトリにあり、python setup.py installを介してこれらのファイルをユーザのシステムにインストールするようにsetup.pyスクリプトを設定しています。これは今のところうまくいきますが、tarballが 数百Mbを超える可能性があるので、PyPIへの配布をアップロードできないようです。

代わりに、私はPyPIに親切であるようにリモートサイトのファイルを "ホスト"し、ファイルを自動的に取得してインストールしたいと思います。これは既存のPython配布技術を使用して可能ですか?もしそうなら、これを行う方法や例を挙げてください。それが不可能な場合は、これを取り除くためのベストプラクティスは何ですか?

あなたが提供できる洞察は大歓迎です。

答えて

2

NLTKは、コーパスデータの配信にも同様の状況があります。私のLinuxディストリビューションでは、データは別のパッケージに入っているので、Windowsにsetuptoolsをインストールして調査しました。

コーパスを使用しようとすると、nltkはダウンローダ機能(nltk.download())を実行するように要求します。内部的には、データを必要とするコーパスオブジェクトをスタンダードとしてLazyCorpusLoaderを使用し、必要に応じてデータをロードします。

sys.pathのように、事前にいくつかのパスを検索して、ユーザーが望む場所に置くことができます。 nltk.data.pathを変更して、独自の場所をデータに追加することもできます。

+0

ありがとう、これは興味深い選択肢です。私は単純にモジュールが既にインストールされていると仮定してモジュール___ file__を照会し、返されたパスに基づいて適切な場所にデータファイルを配置するget_data.pyという小さなスクリプトを書くことができたと思います。 – jobu

+0

ユーザーが実行されていると仮定すると、ディレクトリへの書き込みアクセス権があります。 – forivall

+0

ありがとうございます。率直に言えば、setup.pyのpackage_dataの要件をURLのリストに示すだけで驚いています。 – jobu

関連する問題