如何使用python包分发数据文件,使其可读?

时间:2013-02-13 19:39:42

标签: python distutils setup.py

我有一个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中分发数据和配置文件,以便在运行时读取它们?

2 个答案:

答案 0 :(得分:1)

我担心你不能开箱即用:如果我没记错,文件权限只是按原样复制。在安装命令复制之前,您需要编写自定义构建命令来更改构建目录中的文件权限。

最简单的解决方案是在您的存储库或源代码树中拥有所需的权限。

答案 1 :(得分:0)

我也有这个问题,我解决了。

正如@ÉricAraujo所说,你应该改变file.data的权限。 如果您的文件的权限为400,则还会安装权限400。但是,如果您使用root权限安装了软件包,则所有者将为root。普通用户无法读取这一点。

我认为将权限更改为644就足够了。请务必在您的currnet位置删除mypackage.pkg-infobuilddist,否则您无法应用数据文件的新权限。