如何使用python包分发数据文件,使其';重新阅读?
我有一个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_
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
文件权限。