python – 无法通过setuptools在egg中包含静态包文件

我正在尝试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')
上一篇:Python:pip在root目录中安装子包


下一篇:selenium环境配置