3

私は次のような設定のPythonモジュールを持っています:

from distutils.core import setup
setup = (
    ...
    package_data={'mypackage': ['my/file.data']})

このようにレイアウトされたパッケージで:

mypackage/
    setup.py
    mypackage/
        __init__.py
        my/
            file.data

次のようになり__init__.pyます。

import pkgutil
DATA = pkgutil.get_data(__name__, 'my/file.data')

ものすごく単純。私が欲しいのは、Pythonプラグインにデータを取り込むことだけです。しかし、私がそれをインストールすると

sudo python setup.py install

そしてそれを実行しようとすると、私は得ます

IOError: [Errno 13] Permission denied: '/usr/local/lib/python2.7/dist-packages/mypackage/my/file.data'

不正な権限でインストールされています。

実行時に読み取ることができるように、Pythonでデータと構成ファイルを配布するにはどうすればよいですか?

4

2 に答える 2

1

残念ながら、すぐにそれを行うことはできません。私の記憶が正しければ、ファイルのアクセス許可はそのままコピーされるだけです。インストール コマンドによってコピーされる前に、ビルド ディレクトリ内のファイル権限を変更するには、カスタム ビルド コマンドを記述する必要があります。

最も簡単な解決策は、リポジトリまたはソース ツリーで目的の権限を取得することです。

于 2013-02-14T03:39:21.273 に答える
0

私もこの問題を抱えており、解決しています。

@Éric Araujo が言ったように、あなたの pemission を変更する必要がありますfile.data。ファイルのパーミッションが の場合、ファイル400もパーミッション付きでインストールされ400ます。ただし、パーミッションrootを使用してパッケージをインストールした場合は、所有者になります。rootそして、これは通常のユーザーには読み取れません。

パーミッションを に変更するだけで十分だと思います644。また、現在の場所にあるとを忘れずに削除mypackage.pkg-infoしてください。削除しないと、データ ファイルの新しいアクセス許可を適用できません。builddist

于 2013-06-09T16:54:56.053 に答える