部署Discord机器人时,因pip相关问题无法将GitHub分支部署到Heroku
问题根源与解决方法
为什么会出现这些错误?
- pywin32/pypiwin32是Windows专属库:Heroku的运行环境是Linux容器,这类仅支持Windows的库在Linux上无法安装,也完全不需要。
- pypiwin32旧版本兼容问题:你尝试的pypiwin32==219是Python2时代的版本,代码用了Python2的
print语法(无括号),而Heroku使用Python3,因此触发语法错误。
解决步骤
删除Windows专属依赖
打开本地的requirements.txt,删掉所有包含pywin32或pypiwin32的行——包括原来的pywin32==304,以及后来添加的pypiwin32==xxx。推送更新到GitHub
在本地终端执行以下命令,将修改后的文件推送到GitHub:git add requirements.txt git commit -m "移除Windows专属的pywin32依赖,适配Heroku Linux环境" git push origin main重新部署到Heroku
回到Heroku后台,要么等待Heroku自动检测GitHub更新并触发部署,要么手动点击「Deploy Branch」按钮重新部署主分支。
额外提示
以后生成requirements.txt时,尽量在干净的虚拟环境中安装必要依赖,避免混入本地Windows系统的专属库。可以用以下命令生成更干净的依赖列表:
pip freeze --exclude-editable > requirements.txt
内容的提问来源于stack exchange,提问作者Xiaolong Guo
相关产品推荐
相关产品推荐

