我是python的新手并编写了一个我想要为debian打包的应用程序。因此,我想(并且我必须)使用 pybuilder 。我的目标是创建一个.deb包(目前使用 stdeb ),这样可以确保安装所有必需的库。
我的应用程序使用第三方库,只能通过 pip(3)安装(无debian软件包)获得。
我的build.py
看起来像是:
[...]
use_plugin("python.core")
use_plugin("python.unittest")
use_plugin("python.install_dependencies")
use_plugin("python.distutils")
use_plugin("copy_resources")
use_plugin("source_distribution")
use_plugin("python.flake8")
use_plugin("python.coverage")
use_plugin("python.stdeb")
@init
def initialize(project):
project.build_depends_on('coverage')
project.build_depends_on('flake8')
project.build_depends_on('jsonmerge')
project.build_depends_on('mock')
project.build_depends_on('setuptools')
project.build_depends_on('stdeb')
project.build_depends_on('unittest-xml-reporting')
project.build_depends_on('xmlrunner')
project.depends_on('<pip-only-library>')
project.set_property('coverage_threshold_warn', 50)
project.set_property('flake8_break_build', False)
project.set_property('flake8_ignore', 'E501,E402,E731')
project.set_property('flake8_include_test_sources', True)
project.set_property('flake8_verbose_output', True)
project.set_property('verbose', True)
project.set_property("copy_resources_target", "$dir_dist")
project.set_property("coverage_break_build", False)
project.set_property("coverage_reset_modules", True)
project.set_property("dir_dist_scripts", 'scripts')
project.set_property("distutils_classifiers", [
'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3.3',
'Programming Language :: Python :: 3.4',
'Development Status :: 4',
'Environment :: Console',
'Intended Audience :: Systems Administration',
'License :: OSI Approved :: BSD License'])
project.set_property('distutils_commands', ['bdist'])
project.set_property('distutils_commands', ['sdist'])
debian包的生成一般。致电pyb
成功创建了python3-mypackage_1.0-1_all.deb
个套餐
生成的 setup.py 如下所示:
# `target/dist/mypackage-1.0/setup.py`
[...]
if __name__ == '__main__':
setup(
[...]
packages = [],
[...]
entry_points = {},
data_files = [],
package_data = {},
install_requires = ['pip-only-library'],
dependency_links = [],
zip_safe=True,
cmdclass={'install': install},
)
使用sudo dpkg -i python3-mypackage_1.0-1_all.deb
测试软件包安装失败,因为 dpkg 是指依赖软件包python3-<pip-only-library>
,该软件包不可用。
在构建期间,库存在于本地计算机上。
所以,现在出现了新手问题:如何更改build.py
以确保创建的debian软件包提供我的应用程序并确保满足库要求。
也许,是否可以将仅使用pip的库(即在构建时从/usr/local/lib/python3.4/dist-packages
获取)捆绑到我的应用程序,并将它们发送到具有所有依赖项&#39; -package的应用程序中?或者有替代方法吗?
我已经看过this answer,但它没有帮助。