PyImgur商用配置报错:需将Mashape域名切换为RapidAPI
解决PyImgur商用模式连接失败问题
问题情况
用PyImgur上传图片时,非商用模式能正常运行,但添加mashape_key参数启用商用模式后,出现连接错误:
HTTPSConnectionPool(host='imgur-apiv3.p.mashape.com', port=443): Max retries exceeded with url: /3/image (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7f7cb9afb430>: Failed to establish a new connection: [Errno -2] Name or service not known'))
错误原因
Imgur的商用API早已从Mashape迁移到RapidAPI,但PyImgur库硬编码的Mashape域名imgur-apiv3.p.mashape.com已经失效,需要替换为RapidAPI的官方域名imgur-apiv3.p.rapidapi.com。目前该库的GitHub仓库疑似无人维护,官方没更新这个配置。
解决方案
方案1:直接修改已安装的库文件
- 先找到PyImgur的安装路径,终端运行:
pip show pyimgur
从输出的Location字段获取库所在目录,比如/usr/local/lib/python3.x/site-packages/pyimgur
- 打开该目录下的
__init__.py文件,找到第51行的MASHAPE_BASE常量,把值从:
MASHAPE_BASE = "https://imgur-apiv3.p.mashape.com"
改成:
MASHAPE_BASE = "https://imgur-apiv3.p.rapidapi.com"
- 保存文件后重新运行代码即可。
方案2:动态替换域名(无需改源码,更稳妥)
在自己的代码里,初始化PyImgur实例后直接修改其base_url属性,避免修改库文件导致后续pip更新失效:
import pyimgur import os # 初始化商用模式实例 im = pyimgur.Imgur(os.getenv("IMGUR_CONSUMER_ID"), mashape_key=os.getenv("MASHAPE_KEY")) # 替换为RapidAPI的正确域名 im.base_url = "https://imgur-apiv3.p.rapidapi.com" # 正常执行上传操作 uploaded_image = im.upload_image("your_image.jpg") print(uploaded_image.link)
内容的提问来源于stack exchange,提问作者Joshua Hovden
相关产品推荐
相关产品推荐

