我正在尝试Pyramid教程示例,它的内置setup.py文件似乎被设置为将静态文件添加到egg文件但实际上并没有发生.我做了一些搜索和玩弄设置,但我无法得到所需的行为.
>有一个MANIFEST.in文件,它包含一行:include * .ini
> include_package_data设置为True
> package_data包含条目:{”:[‘* .ini’]}’
我改变的设置似乎并不重要,似乎没有效果.我应该提一下SOURCES.txt文件中列出了所需的文件.
我想要包含的文件位于发行版目录的根目录(setup.py所在的位置).
我在这里似乎缺少什么?
解决方法:
金字塔的*.ini文件是“非包数据文件”,即它们所在的目录中没有__init__.py.这意味着它们不会包含在使用setup.py bdist_egg生成的egg存档中,即使您满足条件1和2也是如此.
为了包括这样的“非包数据文件”,我认为最干净的方法是将它们作为data_files添加到setup(),例如,
setup(
...
data_files=[
('', [
'development.ini',
'production.ini',
]),
],
zip_safe=False,
...
)
然后,文件将包含在*的egg存档中,可通过以下方式检索:
import os
import pkg_resources
dist = pkg_resources.get_distribution('MyApp')
config_file = os.path.join(dist.location, 'production.ini')