【发布时间】:2018-11-06 20:18:49
【问题描述】:
我有一个代理 pypi 存储库,它只能由特定用户更新但所有人都可以访问,我有一个私有 pypi 存储库和一个虚拟存储库来访问它们。
我的问题是一段时间后,虚拟仓库上的任何 pip 安装都会失败,找不到模块的版本。我尝试通过 https//myartifactory/proxy_name-cache/.pypi/module_name 直接访问它,我得到了 404。
https://jfrog.com/knowledge-base/how-to-fix-404-error-resource-has-expired/
我从这里了解了过期策略,事实上,如果我从以前的 URL 中删除 -cache 或者我使用我的虚拟存储库(没有登录工件),模块会更新并且 pip 安装开始上班。
为什么 pip install 命令不触发更新模块并使其可下载的相同机制,我该如何解决这个问题?
@编辑
我会尽力解释得更好 我昨天从 pypi 填充了缓存。今天,工件被标记为已过期(我可以通过在 https//myartifactory/proxy_name-cache/.pypi/module_name.html 上发出一个返回 404 的请求来查看)
因此,执行 pip install module_name 不起作用(找不到满足要求的版本...)。
这是我的问题
事实是,如果我执行返回 404 错误的相同请求,但在 proxy_name 或 virt_name 而不是 proxy_name-cache 上,那么 artifactory 会使用其上游版本更新工件,然后它开始工作(直到它再次标记为过期)
这种行为让我想知道为什么执行 pip 安装而不是简单请求(如 curl 或使用浏览器)也不会使用其上游版本更新工件
为了说明我的问题:
pip install -i https://myartifactory.net/api/pypi/virt/simple requests # Could not find a version...
curl https://myartifactory.net/pypi-cache/.pypi/requests.html # 404, resource has expired
curl https://myartifactory.net/virt/.pypi/requests.html # 200, returns the html page of versions, meaning it has updated the module with the upstream version
pip install -i https://myartifactory.net/api/pypi/virt/simple requests # Is now working
【问题讨论】:
-
不确定是什么问题。您写道,虚拟存储库的命令不起作用,后来写道“如果我从以前的 URL 中删除 -cache 或者如果我使用我的虚拟存储库(没有登录工件),则模块会更新并且pip 安装开始工作。”所以我不确定是什么问题..你能解释得更清楚吗?
-
我试图更清楚,我编辑了原帖
标签: python pip artifactory pypi