如何使用python包分发数据文件,使其';重新阅读?

如何使用python包分发数据文件,使其';重新阅读?,python,distutils,setup.py,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 import pkgutil DATA = pkgutil.get_

我有一个python模块,其设置如下:

from distutils.core import setup
setup = (
    ...
    package_data={'mypackage': ['my/file.data']})
mypackage/
    setup.py
    mypackage/
        __init__.py
        my/
            file.data
import pkgutil
DATA = pkgutil.get_data(__name__, 'my/file.data')
在如下所示的包装中:

from distutils.core import setup
setup = (
    ...
    package_data={'mypackage': ['my/file.data']})
mypackage/
    setup.py
    mypackage/
        __init__.py
        my/
            file.data
import pkgutil
DATA = pkgutil.get_data(__name__, 'my/file.data')
\uuuu init\uuuuu.py
看起来像这样:

from distutils.core import setup
setup = (
    ...
    package_data={'mypackage': ['my/file.data']})
mypackage/
    setup.py
    mypackage/
        __init__.py
        my/
            file.data
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中分发数据和配置文件,以便在运行时读取它们?

恐怕您无法做到开箱即用:如果我没记错的话,文件权限只是按原样复制。您需要编写一个自定义的build命令来更改build目录中的文件权限,然后才能通过install命令进行复制


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

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

正如@eric Araujo所说,您应该更改
文件.data
的权限。 如果您的文件的权限为
400
,则它也将以
400
权限安装。但是,如果您使用
root
权限安装包,则所有者将是
root
。这是普通用户无法读取的


我认为将权限更改为
644
就足够了。请记住删除currnet位置中的
mypackage.pkg info
build
dist
,否则无法应用数据文件的新权限。

该文件可能具有错误的权限,请确保每个人都可以读取.data文件。它肯定具有错误的权限。问题是如何使用正确的权限进行
setup.py安装
安装,因为我没有能力更改安装我的软件包的每个人在计算机上的
.data
文件权限。