gpt4 book ai didi

python - 准备一个复杂的 python 项目以提交到启动板

转载 作者:太空宇宙 更新时间:2023-11-04 05:56:39 25 4
gpt4 key购买 nike

我正在努力思考整个 PPA 的事情,它似乎和每个人都认为的一样困难。让我们以http://docs.bokeh.org/这样的项目为例它具有 node.js 依赖项并从中生成 .deb。正在关注this guide ,以及这里的各种帖子,我尝试使用 stdeb 来做到这一点:

pypi-download bokeh
tar xfz bokeh-0.7.0.tar.gz
cd bokeh-0.7.0/bokehjs/
npm install
grunt build
cd ..
python3 setup.py --command-packages=stdeb.command sdist_dsc

输出结束

dh clean --with python3 --buildsystem=python_distutils
dh_testdir -O--buildsystem=python_distutils
debian/rules override_dh_auto_clean
make[1]: Entering directory `/home/emre/Desktop/bokeh-0.7.0/deb_dist/bokeh-0.7.0'
python3 setup.py clean -a
/home/emre/Desktop/bokeh-0.7.0/deb_dist/bokeh-0.7.0/bokehjs

ERROR: Cannot install BokehJS: files missing in `./bokehjs/build`.


Please build BokehJS by running setup.py with the `--build_js` option.
Dev Guide: http://docs.bokeh.org/docs/dev_guide.html.

我刚刚做到了!我错过了什么吗?对于直接来自 pypi 的东西来说,这座建筑是否必要?指南掩盖了这些事情。

最佳答案

制作好的 deb 可能很复杂,是的,尤其是当您不是上游作者并且不确定他们安装软件的确切意图时。复杂化是必要的,因为行为良好的 debs 必须符合相当长的列表 policiesrequirements以便用户知道在许多不同的情况和情况下对他们有什么期望。 debs 的源代码需要包含足够的信息,以便它可以由自动化系统构建(包括安装任何必要的构建依赖项)。二进制(构建的)deb 必须将它们的文件放在系统上的正确位置并且不破坏任何其他包并且能够在完全卸载后自行清理。 Debs 应该可以在没有用户在交互式终端上观看的情况下安装。 Debs 必须声明他们所有的依赖项,以及这些依赖项的必要版本,除了一些被认为是“必需”的包。在构建或安装过程中,Debs 不应该从互联网上下载任何东西。等等等等。这种严格性和社区遵守它的程度实际上是运行基于 Debian 的发行版最重要的好处之一。

另一方面,Python 源代码发行版(例如您在 PyPI 上找到的那些发行版)几乎可以为所欲为。使用 setup.py 构建和安装命令的新出现的最佳实践,但并不总是被遵循,即使被遵循,仍然存在很大的解释和差异空间。有些,例如您在此处引用的那个,可能会任意要求用户在正常构建之前使用不同的非标准选项调用 setup.py。有些人继续下载他们自己的依赖项并将它们放在他们想要的任何地方。大多数超出微不足道的软件包都不知道如何自行卸载。

这两种方法都很好,并且在不同的上下文中效果更好。但希望您现在可以明白为什么在一般情况下不可能将任意 Python 源代码分发自动转换为工作 deb。关于 Python 的行为方式,计算机必须假设的太多了。

话虽如此,如果您不关心是否符合 Ubuntu/Debian 政策,而只想能够将一些东西放在个人存储库中,那么最简单的方法可能是更改 Python 源代码,以便它会根据需要自动执行 --build_js 操作,而不是提示并要求用户执行此操作。

关于python - 准备一个复杂的 python 项目以提交到启动板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27419316/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com