从Pipenv迁移至venv后部署Heroku遇Pipfile.lock过期问题求助
彻底在Heroku迁移至venv(弃用Pipenv)的解决步骤
你的报错是因为Heroku检测到项目里的Pipfile/Pipfile.lock,仍在尝试用Pipenv安装依赖。要彻底切换到基于venv的依赖管理(Heroku实际依赖的是requirements.txt),按以下步骤操作:
生成准确的
requirements.txt:在本地激活你的venv虚拟环境后,执行命令:pip freeze > requirements.txt这会把当前venv里的所有依赖及其版本导出到文件中。
删除Pipenv相关文件:直接删掉项目根目录下的
Pipfile和Pipfile.lock,避免Heroku触发Pipenv的构建逻辑。确认Heroku构建配置:如果之前手动设置过Pipenv的buildpack,需要切换回官方Python buildpack,执行:
heroku buildpacks:remove heroku/pipenv heroku buildpacks:add heroku/python(如果没手动添加过Pipenv buildpack,这一步可以跳过)
提交并推送代码:把生成的
requirements.txt、删除Pipenv文件的变更提交到Git,然后推送到Heroku:git add requirements.txt git rm Pipfile Pipfile.lock git commit -m "Migrate from Pipenv to requirements.txt for Heroku" git push heroku main
推送完成后查看Heroku的构建日志,应该会看到用pip安装依赖的流程,而非Pipenv,问题即可解决。不需要退回使用Pipenv,按上述步骤操作就能完成彻底迁移。
内容的提问来源于stack exchange,提问作者Jorge López
相关产品推荐
相关产品推荐

