Pipfile.lock已过期

时间:2018-03-24 02:00:06

标签: python django heroku

我正在尝试将一个大型django项目部署到heroku。我安装了Heroku CLI,登录,创建了一个应用程序并运行:

git push heroku master

我已经设置了Pipfile和requirements.txt。我添加了一个runtime.txt来指定我需要python 2.7。这也在Pipfile中。这是我从推送到heroku得到的:

$ git push heroku master
Counting objects: 12159, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (4853/4853), done.
Writing objects: 100% (12159/12159), 20.94 MiB | 1.82 MiB/s, done.
Total 12159 (delta 6859), reused 12036 (delta 6751)
remote: Compressing source files... done.
remote: Building source:
remote: 
remote: -----> Python app detected
remote: -----> Installing python-3.6.4
remote: -----> Installing pip
remote: -----> Installing dependencies with Pipenv 11.8.2…
remote:        Your Pipfile.lock (3b2ba9) is out of date. Expected: (83a5b4).
remote:        Aborting deploy.
remote:  !     Push rejected, failed to compile Python app.
remote: 
remote:  !     Push failed
remote: Verifying deploy....
remote: 
remote: !   Push rejected to camp-infinity.
remote: 
To https://git.heroku.com/camp-infinity.git
 ! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'https://git.heroku.com/camp-infinity.git'

由于某种原因,它试图安装python 3,它也不喜欢我的Pipfile.lock文件。我已经尝试删除它并使用pipenv安装再次生成它,但这并没有改变任何东西。

10 个答案:

答案 0 :(得分:21)

在处理项目时遇到同样的问题,在你推送到Heroku的分支中,运行

pipenv lock

它将更新Pipfile.lock文件。 :)

答案 1 :(得分:2)

我删除了Pipfile.lock并确认将其删除。 Heroku的构建过程抱怨它不存在,但是确实部署成功...

-----> Python app detected
 !     No 'Pipfile.lock' found! We recommend you commit this into your repository.
-----> Installing pip
-----> Installing dependencies with Pipenv 11.8.2…
       Installing dependencies from Pipfile…
-----> Discovering process types
       Procfile declares types -> worker
-----> Compressing...
       Done: 189.9M
-----> Launching...
       Released v5

答案 2 :(得分:2)

如果已经创建了一个Pipfile,将其删除并再次推送部署。它应该重新安装您的依赖项。这对我有用。

答案 3 :(得分:1)

您应该提供:

  1. Pipfile和相应的Pipfile.lock
    1. requirements.txt(以及可选runtime.txt
    2. 如果您使用的是Pipfile,请git rm requirements.txt runtime.txt并确保git add Pipfile Pipfile.lockgit commit,然后尝试git push到heroku。

      https://devcenter.heroku.com/articles/python-runtimes

答案 4 :(得分:1)

我遇到了同样的问题,这是由于指向Pipfile.lock的符号链接。

在我的本地mac OS环境中克隆了repo后,由于某些原因,原始链接有点破坏,当推送到Heroku时导致Your Pipfile.lock (3b2ba9) is out of date. Expected: (83a5b4)

只需删除" old"符号链接并从我当地的env重新创建它解决了这个问题。

答案 5 :(得分:1)

处理此问题的最简单方法是运行: pipenv lock 然后git commit -am "updated pipfile"git push && git push heroku master

这些命令执行的功能与其他问题中列出的其他命令完全相同,但是,这样做可能会更快一些。

答案 6 :(得分:0)

使用Heroku CLI,当出现确切的错误时,我正在从git push heroku master以外的本地分支运行master

remote: -----> Python app detected
remote: -----> Installing pip
remote: -----> Installing dependencies with Pipenv 2018.5.18…
remote:        Your Pipfile.lock (38bf21) is out of date. Expected: (e4987e).
remote:        Aborting deploy.
remote:  !     Push rejected, failed to compile Python app.
remote:
remote:  !     Push failed
remote: Verifying deploy...

master分支进行部署对其进行了修复。

如果要将非master的本地分支推送到Heroku主服务器,请运行git push heroku branchname:master

答案 7 :(得分:0)

更新我的pipenv:pip install pipenv --upgrade 然后做:pipenv lock 然后提交

为我修复了此问题

答案 8 :(得分:0)

我今天遇到了同样的问题,所以我按照下面提到的方法解决了,方法是更新我的 pipenv - pip install pipenv --upgrade 然后点击 pipenv lock。这是要走的路,可以解决大多数情况。另外,在那之后不要忘记 git add、commit 和 push 到 heroku!希望有帮助!

答案 9 :(得分:-1)

另一个提示:如果您对git add .进行了更新并且看不到任何变化,请确保执行git commit -m "whatever"Pipfile.lock。 :)