【问题标题】:error using pip search (pip search stopped working)使用 pip 搜索时出错(pip 搜索停止工作)
【发布时间】:2021-03-26 05:05:47
【问题描述】:

我在学习 python 时在 pip 搜索中遇到此错误。 当我点搜索时,图片是错误的。能告诉我怎么解决吗?

$ pip search pdbx
ERROR: Exception:
Traceback (most recent call last):                                                                                                                                                  
  File "*/lib/python3.7/site-packages/pip/_internal/cli/base_command.py", line 224, in _main                                                
    status = self.run(options, args)                                                                                                                                                
  File "*/lib/python3.7/site-packages/pip/_internal/commands/search.py", line 62, in run                                                    
    pypi_hits = self.search(query, options)                                                                                                                                         
  File "*/lib/python3.7/site-packages/pip/_internal/commands/search.py", line 82, in search                                                 
    hits = pypi.search({'name': query, 'summary': query}, 'or')                                                                                                                     
  File "/usr/lib/python3.7/xmlrpc/client.py", line 1112, in __call__                                                                                                                
    return self.__send(self.__name, args)                                                                                                                                           
  File "/usr/lib/python3.7/xmlrpc/client.py", line 1452, in __request                                                                                                               
    verbose=self.__verbose                                                                                                                                                          
  File "*/lib/python3.7/site-packages/pip/_internal/network/xmlrpc.py", line 46, in request                                                 
    return self.parse_response(response.raw)                                                                                                                                        
  File "/usr/lib/python3.7/xmlrpc/client.py", line 1342, in parse_response                                                                                                          
    return u.close()                                                                                                                                                                
  File "/usr/lib/python3.7/xmlrpc/client.py", line 656, in close                                                                                                                    
    raise Fault(**self._stack[0])                                                                                                                                                   
xmlrpc.client.Fault: <Fault -32500: 'RuntimeError: This API has been temporarily disabled due to unmanageable load and will be deprecated in the near future. Please use the Simple or JSON API instead.'>              

【问题讨论】:

  • 您可能想使用与您正在学习的相同版本的python
  • 简而言之,这里没有什么可修复的。正如消息所说,搜索 api 被“暂时”禁用
  • 得到了同样的错误信息 pip 23.3 python3 try using pypi.org/project/pypi-simple
  • 这也确实打扰了我的工作,我之前使用这个功能没有问题。我正在使用 python3.8 定期更新 ubuntu 20.04 系统。 cli搜索是否有替代方法?

标签: python python-3.x pip


【解决方案1】:

错误提示

请改用 Simple 或 JSON API

你可以试试pypi-simple查询pip仓库

https://pypi.org/project/pypi-simple/

它也给出了一个例子,我在这里尝试使用它:

pypi-simple version 0.8.0 DistributionPackage' object has no attribute 'get_digest':

!/usr/bin/env python3
 -*- coding: utf-8 -*-
"""
Created on Thu Nov  11 17:40:03 2020

@author: Pietro

"""


from pypi_simple import PyPISimple

def simple():
    package=input('\npackage to be checked ')
    
    try:
        with PyPISimple() as client:
            requests_page = client.get_project_page(package)
    
    except:
        print("\n SOMETHING WENT WRONG !!!!! \n\n",
        "CHECK INTERNET CONNECTION OR DON'T KNOW WHAT HAPPENED !!!\n")
        
    pkg = requests_page.packages[0]
    
    print(pkg)
    print(type(pkg))
    
    print('\n',pkg,'\n')

    print('\n'+pkg.filename+'\n')
    
    print('\n'+pkg.url+'\n')
    
    print('\n'+pkg.project+'\n')
    
    print('\n'+pkg.version+'\n')
    
    print('\n'+pkg.package_type+'\n')
    
    #print('\n'+pkg.get_digest()+'\n','ENDs HERE !!!!') #wasnt working
     

if __name__ == '__main__': 
  
   simple()

到目前为止,这个答案得到了 -4 不知道为什么,我可以尝试检查一个包:

# package_name = input('insert package name  :  ')

package_name = 'numpy'

import requests
url = ('https://pypi.org/pypi/'+package_name+'/json')
r = requests.get(url)


try: 
    data = r.json()
    
    for i in data:
        if i == 'info':
            print('ok')
            for j in data[i]:
                if j == 'name':
                    print((data[i])[j])
                    print([k for k in (data['releases'])])


    
except:
    print('something went south !!!!!!!!!!')

【讨论】:

    【解决方案2】:

    在网站上搜索,https://pypi.org/, 然后安装你想要的包

    【讨论】:

      【解决方案3】:

      pip search 命令查询 PyPI 的服务器,PyPI 的维护人员解释说,pip search 命令查询的 API 端点资源非常密集,而且成本太高,无法始终对公众开放。因此,他们有时会限制访问,实际上计划很快将其完全删除。

      看到这个GitHub issues thread ...

      我现在使用的解决方案是pip install pip-search(由 GitHub 用户 @victorgarric 创建的实用程序)。

      所以,我使用 pip_search 而不是“pip search”。绝对胜过通过网络浏览器搜索 PyPI

      【讨论】:

      • 看起来 pip_search 已被删除 - 这是一件好事,因为它会抓取网站,这只会给 PyPI 带来另一个问题。
      • 不,仍然存在...包名称是pip-search,但它提供的命令是pip_search。没有时间仔细研究它的作用,但当我需要搜索一些包时,我确实很感激。所以我希望他们不要删除它。
      • 啊,你说得对,包还在 PyPI 上,只是从作者的 GitHub 中删除/隐藏了。
      • @drkvogel 嗯...人们确实需要以某种方式搜索包。无论他们是从命令行还是在浏览器中执行此操作,他们仍然在某处的服务器上放置负载。我想命令行程序可能更“礼貌”。
      • @AttRigh 是的,我从不使用pip search 或类似的东西。谷歌足够了......
      【解决方案4】:

      按照 JRK 在 github 的讨论中的建议(最后一条评论)搜索命令暂时禁用,同时使用浏览器搜索包: 检查github上的线程并给他一个大拇指;)

      【讨论】:

      • 这个问题不仅仅是暂时的(参见:status.python.org)。基本上,他们正在遭受 DDoS 攻击,他们将永久禁用 XMLRPC 搜索。
      猜你喜欢
      • 2018-12-18
      • 1970-01-01
      • 1970-01-01
      • 2019-06-30
      • 1970-01-01
      • 2014-06-02
      • 1970-01-01
      • 2018-12-13
      相关资源
      最近更新 更多