使用不同谷歌账号部署PythonAnywhere应用遇errno 98错误求助
解决PythonAnywhere部署Google Drive脚本时的
errno 98 address already in use错误 错误原因
你的脚本使用flow.run_local_server()完成Google账号授权,这个方法是为本地桌面环境设计的——它会在本地启动小型HTTP服务器接收授权回调。但在PythonAnywhere这类远程无桌面服务器平台上,要么该端口已被其他进程占用,要么平台限制了本地服务器的启动权限,因此触发errno 98 address already in use错误。
解决步骤
1. 替换授权方式
将脚本中的本地服务器授权替换为控制台授权方式,修改授权相关代码片段:
原代码片段:
else: flow = InstalledAppFlow.from_client_secrets_file(CLIENT_SECRET_FILE, SCOPES) cred = flow.run_local_server()
修改为:
else: flow = InstalledAppFlow.from_client_secrets_file(CLIENT_SECRET_FILE, SCOPES) # 改用控制台授权,适配无桌面的远程服务器环境 cred = flow.run_console()
2. 完成授权流程
部署修改后的脚本到PythonAnywhere并运行时,会在控制台输出授权链接:
- 复制链接到本地浏览器打开,用目标谷歌账号完成授权
- 授权成功后页面会显示授权码,将其复制粘贴回PythonAnywhere控制台,按回车确认
- 脚本会自动生成并保存token文件,后续运行直接使用该token,无需重复授权
3. 环境依赖检查
确保PythonAnywhere环境已安装所需依赖包,执行以下命令安装:
pip install --user google-api-python-client google-auth-httplib2 google-auth-oauthlib
4. 路径验证
确认token文件的存储路径在PythonAnywhere中可访问,脚本中token_dir的路径需与PythonAnywhere工作目录对应,避免因路径问题导致token文件无法读写。
内容的提问来源于stack exchange,提问作者Wahyu Hadinoto
相关产品推荐
相关产品推荐

