您可能要使用
pkg_resources随附的库
setuptools。
例如,我制作了一个快速的小程序包
"proj"来说明我将使用的资源组织方案:
proj / setup.pyproj / proj / __ init__.pyproj / proj / pre.pyproj / proj / resources / __ init__.pyproj / proj / resources / images / __ init__.pyproj / proj / resources / images / pic1.pngproj / proj / resources / images / pic2.png
注意我如何将所有资源保存在单独的子包中。
"pre.py"显示了如何
pkg_resources用于引用资源对象:
from pkg_resources import resource_string, resource_listdir# Itemize data files under proj/resources/images:print resource_listdir('proj.resources.images', '')# Get the data file bytes:print resource_string('proj.resources.images', 'pic2.png').enpre('base64')如果运行它,则会得到:
['__init __。py','__ init __。pyc','pic1.png','pic2.png']iVBORw0KGgoAAAANSUhE ...
如果您需要将资源视为文件对象,请使用
resource_stream()。
访问资源的代码可能在项目子包结构中的任何位置
proj.resources.images,在这种情况下,只需要引用包含全名的图像的子包:即可。
这是
"setup.py":
#!/usr/bin/env pythonfrom setuptools import setup, find_packagessetup(name='proj', packages=find_packages(), package_data={'': ['*.png']})警告:
要“本地”测试,即首先不安装软件包,您必须从具有的目录中调用测试脚本
setup.py。如果您与处于同一目录
pre.py,则Python将不了解
proj软件包。所以类似的事情
proj.resources不会解决。



