如何在自定义 CDN 服务器上静态部署 python wheels 包?

How do I deploy a python wheels package statically on a custom CDN server?

我有一个 CPython 扩展包的分支,它需要几个小时才能编译,所以我想在某个地方部署预编译的轮子来下载而不是从源代码编译。

我也知道我可以自己托管 pypiserver,但我有基本上免费的 CDN 服务,我想知道我是否可以以某种方式在我的 CDN 上部署轮子 "statically"然后做:

pip install -i https://<my cdn of choice> SomePackage

而不是:

pip install https://<my cdn of choice>/SomePackage-1.0-py2.py3-none-any.whl

这将允许我指定包版本或操作系统。

意思是 "repository" 在这种情况下只是一个文件夹,里面有一堆按正确顺序排列的静态文件。

您可以在 CDN 的根目录下创建一个 'simple' 索引,并使每个项目的文件结构等同于 pip 对 'simple' 索引的期望,即本质上:

simple
├── SomePackage
│   ├── SomePackage-1.0-py2.py3-none-any.whl
│   └── index.html
└── index.html

然后你可以做:

$ pip install -i https://<my cdn of choice>/simple SomePackage

请参阅 PEP 503 -- Simple Repository API 了解 HTML 页面结构的确切规范。