2011-07-23 13 views
2

(私の貧しい英語を赦してください)Pythonパッケージの静的ファイルをインストールする

私はPythonアプリケーションのsetup.pyを書いています。

私のアプリには静的なファイル(写真)が必要です。これらのファイルをsetup.pyのdata_files配列に追加する必要があり、ファイルはLinuxの/ usr/xxxパスにインストールされます。

次に、私のアプリはインストール後にこれらのファイルにアクセスできますか?私はそれは良い考えではないと思う(私のアプリでは/usr/share/xxx/xxx.pngのような)absloteパスを使用する(それは窓では動作しません)。

+0

なぜあなたはモジュールの路外にそれらをインストールするのでしょうか? – agf

+0

モジュールのパスにそれらをインストールするにはどうすればいいですか?知りません。 – cuihao

答えて

2

あなたが代わりに絶対パスのsys.prefixを使うことになっている:

filename = os.path.join(sys.prefix, "share", "xxx", "xxx.png") 
0

は、この目的のためにpkg_resourcesを提供(およびpython setup.py developまたはpip install -eによってインストールされたパッケージで動作します)/ setuptoolsのを配布します。

APIの例::

import pkg_resources 
    assert pkg_resources.resource_exists('fabric', 'README.txt') 
    assert not pkg_resources.resource_isdir('fabric', 'README.txt') 
    myfile_path = pkg_resources.resource_filename('fabric', 'README.txt') 
    myopen_file = pkg_resources.resource_stream('fabric', 'README.txt') 
    myfile_str = pkg_resources.resource_string('fabric', 'README.txt') 
    contents_of_package = pkg_resources.resource_listdir('fabric', '')