首页 > 解决方案 > 自托管devpi的客户端URL?

问题描述

我正在运行这个devpi docker 容器

按照说明,我在环境变量 DEVPI_PASSWORD 中将密码设置为 devpi 然后

我已经设置了 ~/.pypirc 文件

[devpi]
repository:http://127.0.0.1:3141/root/pypi
username:root
password:devpi

但是在尝试上传(更新它,因为它包含我的包的旧版本)python包时,我得到了错误

$ twine upload -r devpi dist/*.tar.gz
Uploading distributions to http://127.0.0.1:3141/root/pypi
Uploading maildiff-1.3.0.tar.gz
100%|███████████████████████████████████████| 16.4k/16.4k [00:00<00:00, 667kB/s]
HTTPError: 404 Client Error: Not Found for url: http://127.0.0.1:3141/root/pypi

那么客户端 URL 应该是什么?

标签: pippypitwinedevpipypiserver

解决方案


/root/pypi是指向https://pypi.org上的 PyPI 存储库的只读代理链接。devpi其目的是在本地实例上不可用时安装软件包。要将包上传到本地实例,您需要先创建一个非root用户和一个索引。在您的主机上,启动容器并(假设从容器到主机的端口映射有效)发出:

$ devpi use http://127.0.0.1:3141
$ devpi login root                         # by default, only root can create new users
$ devpi user -c me password=mypass         # create new user
$ devpi login me                           # relogin as the new user
$ devpi index -c myindex bases=/root/pypi  # create new index

如果您收到错误devpi: command not found,请停止容器并devpi-client在您的主机上安装:

$ pip install devpi-client

http://127.0.0.1:3141/me/myindex现在您有了一个可以上传到的索引。配置.pypirc更改为:

[devpi]
repository:http://127.0.0.1:3141/me/myindex
username:me
password:mypass

从索引安装将通过将索引 url 传递给pip

$ pip install maildiff --extra-index-url=http://127.0.0.1:3141/me/myindex

推荐阅读