之前写了一篇 rembg 库去背景的博文,有朋友发现怎么也无法解决,一直卡在下载报错。
requests.exceptions.ConnectionError: HTTPSConnectionPool(host='drive.google.com', port=443): Max retries exceeded with url: /uc?id=1tCU5MM1LhRgGou5OpmpjBQbSrYIUoYab (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x000002547D2EAA60>: Failed to establish a new connection: [WinError 10060] 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。'))
模型下载后需要解决放在用户目录的 .u2net
文件夹,如果你没有特殊设置,其目录为 C:\Users\你的用户名
如:C:\Users\Administrators
只需要将下载的4个onnx文件放在 C:\Users\Administrators\.u2net
文件夹即可。
注意文件夹名称u2net前面有个点。
如果你不知道自己的用户目录,也可以在文件管理器地址栏输入%homepath%
回车即可转到用户目录。
如果还是报错,你可以尝试设置环境变量 U2NET_HOME
,自定义这个文件夹的位置。
再不行可以修改 python 库的 site-packages\rembg\session_factory.py
的 42 行添加打印,打印出来看看到底跑到哪个地方找文件了。
home = os.getenv("U2NET_HOME", os.path.join("~", ".u2net"))
path = Path(home).expanduser() / f"{model_name}.onnx"
# 这里打印出来看看到底跑到哪个地方找文件了
print(path)
path.parents[0].mkdir(parents=True, exist_ok=True)
if not path.exists():
with redirect_stdout(sys.stderr):
gdown.download(url, str(path), use_cookies=False)
else:
hashing = hashlib.new("md5", path.read_bytes(), usedforsecurity=False)
if hashing.hexdigest() != md5:
with redirect_stdout(sys.stderr):
gdown.download(url, str(path), use_cookies=False)