我面临着一个非常缓慢的Docker构建过程,部分原因是我们正在不断构建和安装的所有Python软件包中。我非常想加快速度。
我已经从PyPI下载了软件包,因此可以对它们进行很好的了解。我还将它们放在本地pypiserver中(实际上是两个),并确认可以从那里安装它们。
软件包的扩展名是:
87 .whl ............................................................
23 .tar.gz ................
2 .zip .
我在想,如果将某些.tar.gz(以及.zip和源.whl?)安装起来会更快,如果我将它们转换为许多Linux轮子,并将它们放入具有相同配置的本地pypiserver实例中版本号。实际上,一个程序包往往无法随机编译-因此,如果可行的话,构建过程也应该更加可靠。
是否有一个(相对简单的)过程来做这样的事情?也就是说,要从pypi中获取一个.tar.gz(不是一个任意的.tar.gz,仅是pypi中的少数),然后将其转换为二进制manylinux .whl?
例如,在我们的docker构建中,最耗时的软件包可能是https://pypi.org/project/pycapnp/,在我的Linux Mint 19.1笔记本电脑上进行构建和安装大约需要80秒钟。这是.tar.gz。
谢谢!
答案 0 :(得分:1)
执行此操作的方法是在兼容的manylinux Docker image(取决于您要定位的体系结构)中下载并提取源代码发行版(.tar.gz
),然后使用{{ 1}}。
https://github.com/pypa/python-manylinux-demo处有一个演示项目,展示了如何使用CI自动执行此操作,您可能可以对其进行修改,甚至将其回馈给未发布内置发行版(发行版)的项目。
答案 1 :(得分:0)
我相信使用pip wheel
应该很简单。