【问题标题】:Pybuilder - Non-python files are not packagedPybuilder - 非python文件不打包
【发布时间】:2016-05-24 09:19:26
【问题描述】:

我目前的项目是在 python 中。对于构建包生成 + 单元测试运行,我使用 Pybuilder 实用程序,它非常酷。我使用 wheel 分发 将模块安装在其他系统中。

存在一个配置文件,应用程序可以从中读取某些设置。 settings.ini 文件在以下路径中,

PROJECT-ROOT
     |---- src
            |-main
                |-python
                     |- foo
                         |- conf
                         |   |- settings.ini
                         |
                         |-test.py
                         |-access.py

pybuilder 自动从 build.py 脚本创建 setup.py。问题是二进制轮子发行版没有打包非python文件(*.ini文件)。在搜索 SO 帖子时,获得诸如添加 MANIFEST.mf 之类的信息将解决此问题。但是在添加时

 project._manifest_include_directory('foo/conf', ('*.ini',))

它只更新了 sdist 中的 foo/conf/settings.ini,而不是 bdist(wheel)。我希望 wheel 文件在 conf/ 目录中包含 settings.ini。在谷歌搜索中,得到的信息是在 setup.py 中添加 package_data 字段将解决此问题。但是使用 Pybuilder 的 build.py,我无法成功地做到这一点。

谁能帮我解决这个问题?

【问题讨论】:

    标签: python-3.x distutils pybuilder


    【解决方案1】:

    我已向 Max(https://github.com/mriehl) 发送电子邮件,他是 github 中 PyBuilder 代码的贡献者之一。他建议我尝试project.install_file() 选项。

    我尝试了该选项,它对我有用。感谢马克斯。我想在此线程中分享该信息,以便将来对某人有用!

    在后台 project.install_file() 正在修改 distutilssetup.pydata_files 的一部分。

    我在build.py的配置如下,

    @init
    def initialize (project):
    
        # File is installed relative to sys.prefix
        project.install_file("Lib/site-packages/foo/conf","foo/conf/settings.ini")
    

    【讨论】:

    • 我遇到了同样的问题,尝试了 include_file 和 project.package_data.update({'mypkg': [/rel/path/to/file]}) 但无法将文件添加为包二进制分布的数据。
    猜你喜欢
    • 2014-02-08
    • 2019-11-03
    • 1970-01-01
    • 1970-01-01
    • 2018-12-20
    • 2018-03-04
    • 2023-04-05
    • 2011-08-23
    • 2010-12-09
    相关资源
    最近更新 更多