自托管devpi的客户端URL?

Posted

技术标签:

【中文标题】自托管devpi的客户端URL?【英文标题】:client URL for self hosted devpi? 【发布时间】:2018-11-07 06:04:49 【问题描述】:

我正在运行thisdevpi 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 应该是什么?

【问题讨论】:

【参考方案1】:

/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

【讨论】:

好吧,我是通过容器运行的,所以我使用docker exec -it [container-id] bash 进入容器并运行您提到的命令:root@efeb7f50c961:/# devpi login root password for user root: ,我得到以下红色错误:could not connect to None: Invalid URL 'None': No schema supplied. Perhaps you meant http://None? 然后我尝试了devpi user -c me password=mypass 出现红色错误 could not connect to '/me': Invalid URL '/me': No schema supplied. Perhaps you meant http:///me? 我需要设置什么吗? 您应该在容器外进行。在你的主机上安装devpi-client,启动容器并调用命令。 尝试在主机上安装 devpi-client 时出现此错误:Collecting virtualenv&gt;=1.11.2 (from tox!=3.0.0rc1,&gt;=1.7.1-&gt;devpi-client) Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ReadTimeoutError("HTTPConnectionPool(host='127.0.0.1', port=3141): Read timed out. (read timeout=15)",)': /root/pypi/+f/2ce/32cd126117ce2/virtualenv-16.0.0-py2.py3-none-any.whl 并且不会进一步 它是如何通过并安装了devpi客户端的,但是如果我尝试devpi user -c me password=mypass,我仍然会遇到同样的错误 哦,我忘了提到devpi use,它必须在你开始连接服务器之前运行一次。我更新了答案。

以上是关于自托管devpi的客户端URL?的主要内容,如果未能解决你的问题,请参考以下文章

Web API 自托管客户端配置

SignalR 自托管与 WCF 服务和客户端将是桌面用户

SignalR js 客户端似乎忽略了 url 端口

具有自托管的 SignalR 客户端服务器应用程序

使用 web api 自托管获取客户端的 IP 地址

WCF Rest 自托管证书安全服务返回 401 未经授权