Pybuilder - 非 python 文件未打包
Pybuilder - Non-python files are not packaged
我当前的项目在 python。对于生成包生成 + 单元测试 运行,我正在使用 Pybuilder 实用程序,它非常酷。我使用 wheel distribution 在其他系统中安装模块。
存在一个配置文件,应用程序从中读取某些设置。 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,我无法成功地做到这一点。
谁能帮我解决这个问题?
我已经给 Max(https://github.com/mriehl) 发了邮件,他是 github 中 PyBuilder 代码的贡献者之一。他建议我尝试 project.install_file()
选项。
我试过那个选项,它对我有用。感谢马克斯。我想在此线程中分享该信息,以便将来对某人有用!
在后台 project.install_file()
正在修改 distutils 的 setup.py
的 data_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")
我当前的项目在 python。对于生成包生成 + 单元测试 运行,我正在使用 Pybuilder 实用程序,它非常酷。我使用 wheel distribution 在其他系统中安装模块。
存在一个配置文件,应用程序从中读取某些设置。 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,我无法成功地做到这一点。
谁能帮我解决这个问题?
我已经给 Max(https://github.com/mriehl) 发了邮件,他是 github 中 PyBuilder 代码的贡献者之一。他建议我尝试 project.install_file()
选项。
我试过那个选项,它对我有用。感谢马克斯。我想在此线程中分享该信息,以便将来对某人有用!
在后台 project.install_file()
正在修改 distutils 的 setup.py
的 data_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")