繁体   English   中英

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

[英]How do I distribute data files with a python package such that they're readable?

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

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

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

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

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

我认为将权限更改为644就足够了。 请记住在currnet位置删除mypackage.pkg-infobuilddist ,或者不能应用数据文件的新权限。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM