自托管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>=1.11.2 (from tox!=3.0.0rc1,>=1.7.1->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?的主要内容,如果未能解决你的问题,请参考以下文章