我面对的Docker构建过程相当缓慢,部分原因是我们要一遍又一遍地构建和安装Python包,我非常希望加快它。
我已经从PyPI下载了这些软件包,这样我就可以好好看看它们了,我还把它们放在了本地的pypiserver(实际上是两个),并确认我可以从那里安装它们。
软件包的扩展名为:
87 .whl ............................................................
23 .tar.gz ................
2 .zip .
我在想,如果我把其中一些. tar.gz(还有. zip和. whl源码)转换成多个linux wheel,并把它们放在一个本地pypiserver示例中,使用相同的版本号,安装起来会快得多。事实上,一个包往往会随机编译失败--所以如果这样做的话,构建过程也会更可靠一些。
有没有一个(相对来说)简单的过程来做这件事?也就是说,从pypi中获取一个. tar.gz(* 不是 * 任意的. tar.gz--只有少量来自pypi),并将其转换为二进制manylinux.whl?
例如,在我们的docker构建中,可能最耗时的包是https://pypi.org/project/pycapnp/,在我的Linux Mint 19. 1笔记本电脑上构建和安装大约需要80秒,它是一个. tar. gz。
谢谢!
2条答案
按热度按时间fnx2tebb1#
方法是下载源发行版(
.tar.gz
)并将其提取到兼容的manylinux Docker image中(这取决于您想要的目标架构),然后使用python setup.py bdist_wheel
构建wheel。在https://github.com/pypa/python-manylinux-demo上有一个演示项目,它展示了如何使用CI自动完成这一操作,您可能会对其进行调整,甚至将其贡献给未发布构建发行版(wheels)的项目。
nkcskrwz2#
我相信使用
pip wheel
应该非常简单