11

私はいくつかの.txt依存関係を持つPythoneggを開発しています(それらはegg自体によってファイルを生成するために使用されるテンプレートです)、そしてそれらの依存関係をsite-packages中にコピーするのに苦労していsetup.py installます。distributeドキュメントによると...

私のパッケージのファイルシステム:

setup.py
package
|--- __init__.py
|--- main.py
|--- binary (calls main.py with pkg_resources.load_entry_point)
|--- templates
     |--file1.txt
     |--file2.txt

setup.pyの場合:

setup(
    [...]
    eager_resources = ['templates/file1.txt', 'templates/file2.txt']
)

私のパッケージ内:

from pkg_resources import resource_string
tpl = resource_string(__name__, 'templates/file1.txt')

...この構成とファイルシステムの組み合わせにより、 。を介して利用できるようになりfile1.txtます。残念ながら、の間にコピーされていません。私は何が欠けていますか?file2.txtpkg_resources.resource_stringsite-packagessetup.py install

ありがとう!

4

1 に答える 1

5

ここにパッケージデータを含めるためのsetuptoolsドキュメントをご覧になりましたか:https ://setuptools.readthedocs.io/en/latest/setuptools.html#include-data-files

include_package_data=True基本的には、setup.pyファイルで設定する必要があります。subversionまたはCVSを使用している場合は、すべてのバージョン管理されたファイルが含まれます。そうでない場合は、MANIFEST.inファイルに含めるファイルを指定できます。

ディストリビュートもこれをサポートしていると思います。

その後、パッケージ化せずにファイルにアクセスできます。つまり、main.pyでは次のことができます。

import os.path
f = open(os.path.join(os.path.dirname(__file__),'templates','file1.txt'))
print f.read()
f.close()

これはパッケージバージョンでも機能します。注意点の1つは、zip_safe = Falseインストール中にすべてのファイルが解凍されるように、setup.pyも設定する必要があることです。

于 2009-11-14T00:23:45.347 に答える