代理环境下遭遇pip install无限Retry问题的解决办法

出现问题

最初是因为使用selenium爬虫的时候打不开浏览器,即便添加了自动下载最新版驱动的代码

options = webdriver.FirefoxOptions()
# 不加载图片,加快访问速度
options.set_preference('permissions.default.image', 2)
# 无头浏览器
# options.add_argument('--headless')
driver = webdriver.Firefox(service=FirefoxService(GeckoDriverManager().install()), options=options)

还是会报这个错误:

requests.exceptions.ConnectionError: Could not reach host. Are you offline?

搜了下说是跟selenium、浏览器、驱动版本有关系。驱动应该是会自动下最新的,浏览器也更新了,那只可能是跟selenium版本有关系。然而尝试通过pip升级selenium时,

pip install --upgrade selenium

一直报如下错误: 

Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ProxyError('Cannot connect to proxy.', timeout('timed out'))': /simple/selenium/

可以看到“broken by 'ProkyError'”,说明是因为代理造成的。我用的公司电脑,在内网环境下确实是需要用代理上网的。但正常上网没有问题,搜到的一些说法也提到代理环境下无法使用pip的问题。

尝试方案

在网上搜索得到的结果包括但不限于:

  1. 使用国内镜像(添加-i http://pypi.douban.com/simple --trusted-host pypi.douban.com packagename参数)
  2. 关闭代理
  3. 修改环境变量、注册表(公司电脑权限有限,且不想折腾,所以没有进行尝试)

1和2尝试过后都无法解决。其中1部分既试了不同的镜像源地址,也直接修改了pip.ini文件设置,都没有任何效果;试了2以后则是从ProxyError报错变成了NewConnectionError

WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.HTTPSConnection object at 0x000001D81FC16AD0>: Failed to establish a new connection: [Errno 11001] getaddrinfo failed')': /simple/selenium/

 最终解决

最终是在茫茫多的教你用国内镜像的文章中,找到了一篇文章完美解决了我的问题:

pip install 提示代理连接失败原因及解决办法 - 快乐随行 - 博客园

虽然也是要用国内镜像,但写法不同结果却不一样:

pip install --index https://pypi.mirrors.ustc.edu.cn/simple/ --upgrade selenium

不知道--index和-i的区别是什么,但用这个方法确实可以成功使用pip更新和安装包了。非常感谢原文的作者提供的方法!

### pip install -r requirements.txt 报错原因分析 `pip install -r requirements.txt` 命令用于批量安装指定依赖包列表中的 Python 库。然而,在实际操作过程中可能会因多种因素导致报错。以下是常见的几种报错情况及其可能的原因: 1. **文件路径错误** 如果 `requirements.txt` 文件不存在于当前工作目录或者 Docker 容器中未正确加载该文件,则会触发以下错误: ``` ERROR: Could not open requirements file: [Errno 2] No such file or directory: 'requirements.txt' ``` 此类问题通常发生在本地环境或构建镜像时,由于文件位置不匹配所致[^2]。 2. **网络超时** 当某些依赖库较大或源地址不可达时,可能导致下载过程超时并抛出警告信息: ``` WARNING: Retrying (Retry(total=X ... ``` 这种情况下可以考虑更换国内镜像源来加速下载速度[^3]。 3. **版本冲突** 若 `requirements.txt` 中指定了相互矛盾的依赖关系(如某个库的不同版本需求),则会出现类似下面这样的提示: ``` Cannot install both X and Y because of version conflicts. ``` 需要手动调整兼容性设置或将特定行注释处理后再重试[^4]。 --- ### 解决方案汇总 #### 方法一:确认文件存在与否 确保运行命令前已切换至包含 `requirements.txt` 的正确目录下;如果是通过 Docker 构建项目的话,请先验证两者是否处于同一级别,并利用 COPY 指令完成传输动作: ```dockerfile COPY requirements.txt . RUN pip install -r requirements.txt ``` #### 方法二:优化网络连接性能 针对频繁发生 timeout 错误的情况,推荐配置阿里云或其他稳定站点作为默认索引服务器之一: ```bash pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt ``` 另外还可以借助工具自动生成精确清单减少冗余项干扰效果更好些: ```python import os os.system('pip install pipreqs') os.system('pipreqs . --encoding=utf8 --force') # Windows 平台适用参数组合 ``` #### 方法三:修正潜在冲突条款 仔细审阅文档内容是否存在不合理约束条件表达式,必要时临时屏蔽部分字段测试可行性之后再决定保留还是移除它们: ```diff - python-dateutil>=1.4,<2 + # python-dateutil>=1.4,<2 ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值