如何在自定义 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 页面结构的确切规范。
我有一个 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 页面结构的确切规范。