我有一个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中分发数据和配置文件,以便在运行时读取它们?
答案 0 :(得分:1)
我担心你不能开箱即用:如果我没记错,文件权限只是按原样复制。在安装命令复制之前,您需要编写自定义构建命令来更改构建目录中的文件权限。
最简单的解决方案是在您的存储库或源代码树中拥有所需的权限。
答案 1 :(得分:0)
我也有这个问题,我解决了。
正如@ÉricAraujo所说,你应该改变file.data
的权限。
如果您的文件的权限为400
,则还会安装权限400
。但是,如果您使用root
权限安装了软件包,则所有者将为root
。普通用户无法读取这一点。
我认为将权限更改为644
就足够了。请务必在您的currnet位置删除mypackage.pkg-info
,build
和dist
,否则您无法应用数据文件的新权限。