将/ someone / else // .tar.gz包转换为.whl?

时间:2019-11-20 23:02:01

标签: python linux pip pypi python-wheel

我面临着一个非常缓慢的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。

谢谢!

2 个答案:

答案 0 :(得分:1)

执行此操作的方法是在兼容的manylinux Docker image(取决于您要定位的体系结构)中下载并提取源代码发行版(.tar.gz),然后使用{{ 1}}。

https://github.com/pypa/python-manylinux-demo处有一个演示项目,展示了如何使用CI自动执行此操作,您可能可以对其进行修改,甚至将其回馈给未发布内置发行版(发行版)的项目。

答案 1 :(得分:0)

我相信使用pip wheel应该很简单。