私は開発環境を管理するためにpip & virtualenvを使っているDjangoアプリケーションを書いています。Python eggでデータファイルを配布/アクセスする方法は?
pkgmeの1つは、 "バックエンド"である多くのデータファイルが付属しており、その設定ファイルはdata_files=$FOO
(package_data
ではなく)で設定されています。
pkgmeがバックエンドを検索すると、os.path.join(sys.prefix, "share", "pkgme", "backends")
が検索されます。これはpkgmeが正常にインストールされたときにうまく動作し、documentationと一致するようですが、pkgmeが卵としてインストールされている場合はではありません。は動作しません。
データファイルは、$VIRTUAL_ENV/share
ではなく$VIRTUAL_ENV/lib/python2.7/site-packages/pkgme-0.1-py2.7.egg/share
の下にインストールされます。二つの質問を私に残し
:
- 私は関係なく、我々は卵のインストールや従来のシステムのインストールを使用しているかどうかのデータファイルを見つけるために、上記の
os.path.join
以外のものを使用する必要がありますか?もしそうなら、何? - データファイルを卵の中でより容易に利用できるように、データファイルを別々に配布すべきですか?
私はpkgutil.get_data
について知っていますが、むしろそれを使用しないことに注意してください。私はこれらのデータファイルのの内容に興味がありません、代わりにの位置を知りたいので、私はそれらを実行できます。
私の現在の計画はこれを行うことです。
- 使用
package_data
代わりdata_files
- 変更
pkgme.__file__
に対するバックエンドを探すためにpkgmeではなくsys.prefix
ありがとうPJE。 '__file__'チェックについて知っておくとよいでしょう。私はこの質問で提案したアプローチと同様のアプローチを取ったが、いくつかのバックエンドを処理するためにエントリポイントを追加使用していた。 – jml