pip search 和 pip install 出错

新手上路,请多包涵

您好,大约两天后我收到此错误:

错误:XMLRPC 请求失败 [代码:-32500] RuntimeError:PyPI 的 XMLRPC API 目前由于无法管理的负载而被禁用,并将在不久的将来被弃用。有关详细信息,请参阅 https://status.python.org/

我问了一些人并搜索了很多但我不知道问题是什么以及如何解决我尝试了 apt updatepython3 pip install --upgrade pip 由pip本身推荐我在android中使用Termux pip 几天前就开始工作了……

原文由 M-A void 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.4k
2 个回答

遗憾的是 pip search 现在被 python.org 永久禁止。

他们说,他们正在经历 100 天的“每小时数十万次搜索调用”(自 2020 年 11 月 14 日起),并且在发生这种情况之前,已经确定要弃用用于搜索调用的 XMLRPC API .

所以也许我们需要直接在 pypi.org 上搜索包,或者求助于 pypi-simple-searchpipsearch 等包。

原文由 Lightyears 发布,翻译遵循 CC BY-SA 4.0 许可协议

对于基于包名称模式的搜索,我在下面分享了这个脚本,希望你觉得它有用。

 #!/bin/bash
# pypi-search.sh
# This script fetch data from https://pypi.org/simple/
# process the output for simple package name output with perl
# and then apply a regex pattern to the result

pypiurl=https://pypi.org/simple/
currentdate=$(date +%y%m%d)

cachedir=~/.cache/simple-pypi
[[ -d $cachedir ]] || mkdir -p $cachedir

cachefile=$(ls -1 $cachedir/*_simple-pypi.html 2>/dev/null | sort | head -n1)
[[ $cachefile = "" ]] && cachefile=$cachedir/"${currentdate}_simple-pypi.html"

searchpattern="$1"
cmd="$2"

if [[ -f $cachefile ]] ; then
    dbdate=$(echo $cachefile | grep -Po "[0-9]{6,6}")
    # if db is older than 3 days or second parameter is 'update'
    ( (( ($currentdate - $dbdate) > 3 )) || [[ "x$cmd"  = 'xupdate' ]] ) && {
        echo "last update was on : $dbdate"
        cachefile=$cachedir/"${currentdate}_simple-pypi.html"
        wget -q --show-progress -O - $pypiurl > $cachefile
    }
else
    wget -q --show-progress -O - $pypiurl > $cachefile
fi

[[ x$searchpattern = "x" ]] && read -p "Enter pypi name pattern : " searchpattern
perl -pe 's/.*([\/"]{1,1}\>){1,1}([^>]+(.*)[^<])+\<\/a\>/\2/g' $cachefile | grep -P "$searchpattern"

用法:pypi-search.sh ^pip$

原文由 Dorian 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进