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

恐怕你不能开箱即用:如果我没记错的话,文件权限只是按原样复制。您需要编写自定义构建命令来更改构建目录中的文件权限,然后再通过 install 命令复制它们。

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

于 2013-02-14T03:39:21.273 回答
0

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

正如@Éric Araujo 所说,您应该更改file.data. 如果您的文件的权限是400,它也将被许可安装400。但是如果您使用许可root安装了该软件包,则所有者将是。root而且普通用户是看不懂的。

我认为将权限更改为644. 并且记得删除mypackage.pkg-infobuild并且dist在你当前的位置,否则你不能申请你的数据文件的新权限。

于 2013-06-09T16:54:56.053 回答