将 Django 项目推送到 Heroku 时出错

Posted

技术标签:

【中文标题】将 Django 项目推送到 Heroku 时出错【英文标题】:Error pushing Django project to Heroku 【发布时间】:2013-01-07 16:32:32 【问题描述】:

我已经尝试修复这个错误大约一个小时了,但我已经用完了解决方案,所以请帮助我。

heroku 创建

运行良好没有问题

git push heroku 大师

    Counting objects: 119, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (118/118), done.
Writing objects: 100% (119/119), 1.39 MiB | 66 KiB/s, done.
Total 119 (delta 4), reused 0 (delta 0)
-----> Python app detected
-----> No runtime.txt provided; assuming python-2.7.3.
-----> Preparing Python runtime (python-2.7.3)
-----> Installing Distribute (0.6.34)
-----> Installing Pip (1.2.1)
-----> Installing dependencies using Pip (1.2.1)
       Downloading/unpacking Django==1.4.3 (from -r requirements.txt (line 1))
         Running setup.py egg_info for package Django

       Downloading/unpacking dj-database-url==0.2.1 (from -r requirements.txt (line 2))
         Downloading dj-database-url-0.2.1.tar.gz
         Running setup.py egg_info for package dj-database-url

       Downloading/unpacking psycopg2==2.4.6 (from -r requirements.txt (line 3))
         Running setup.py egg_info for package psycopg2

           no previously-included directories found matching 'doc/src/_build'
       Downloading/unpacking virtualenv==1.8.4.post1 (from -r requirements.txt (line     4))
         Could not find a version that satisfies the requirement virtualenv==1.8.4.post1 (from -r requirements.txt (line 4)) (from versions: )
       No distributions matching the version for virtualenv==1.8.4.post1 (from -r requirements.txt (line 4))
       Storing complete log in /app/.pip/pip.log
 !     Heroku push rejected, failed to compile Python app

 To git@heroku.com:[blocked].git
 ! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'git@heroku.com:[blocked].git'

需求文件:

 >Django==1.4.3
 >dj-database-url==0.2.1
 >psycopg2==2.4.6
 >virtualenv==1.8.4.post1

过程文件

web: python manage.py runserver 0.0.0.0:$PORT --noreload

Heroku 日志:

    The 'heroku' gem has been deprecated and replaced with the Heroku Toolbelt, download and install from https://toolbelt.heroku.com.

2013-01-24T01:22:06+00:00 heroku[api]: Enable Logplex by [private email]@yahoo.com
2013-01-24T01:22:06+00:00 heroku[api]: Release v2 created by [private email]@yahoo.com
2013-01-24T01:22:42+00:00 heroku[slugc]: Slug compilation started
2013-01-24T01:23:38+00:00 heroku[slugc]: Slug compilation failed: failed to compile Python app
2013-01-24T01:43:26+00:00 heroku[slugc]: Slug compilation started
2013-01-24T01:43:51+00:00 heroku[slugc]: Slug compilation failed: failed to compile Python app
2013-01-24T02:27:36+00:00 heroku[slugc]: Slug compilation started
2013-01-24T02:28:08+00:00 heroku[slugc]: Slug compilation failed: failed to compile Python app
2013-01-24T02:32:08+00:00 heroku[slugc]: Slug compilation started
2013-01-24T02:32:32+00:00 heroku[slugc]: Slug compilation failed: failed to compile Python app
2013-01-24T02:43:32+00:00 heroku[slugc]: Slug compilation started
2013-01-24T02:43:59+00:00 heroku[slugc]: Slug compilation failed: failed to compile Python app
2013-01-24T02:46:23+00:00 heroku[slugc]: Slug compilation started
2013-01-24T02:46:52+00:00 heroku[slugc]: Slug compilation failed: failed to compile Python app
2013-01-24T02:49:48+00:00 heroku[slugc]: Slug compilation started
2013-01-24T02:50:26+00:00 heroku[slugc]: Slug compilation failed: failed to compile Python app

【问题讨论】:

Pip 找不到virtualenv==1.8.4.post1 的要求。您要么需要将其更改为1.8.4(当前版本)。但是,通常情况下,virtualenv 根本不会放在要求中 - 除非您的应用程序的功能依赖它。 我把它从需求中去掉了,得到了同样的错误。 请发布您的项目的文件结构,包括您的根文件夹以及您的.git repo 文件夹所在的位置。 不确定我是否做得对,但它就是这样。根目录:.git、hellodjango、venv、.gitignore、manage.py、Procfile.txt、requirements.txt。 编辑原始线程,以便您可以显示文件和文件夹结构。与这篇文章类似(只是一个文件结构的随机帖子供参考):***.com/questions/12398460/django-app-file-structure 【参考方案1】:

我能够通过以下方式运行它:

    克隆你的 git 仓库 从您的requirements.txt 中删除virtualenv==1.8.4 git add . git commit -m "removing virtualenv requirement" git push heroku master

我假设您在从您的要求中删除 virtualenv 后没有 git add .git commit。你对git repo 所做的任何更改都不会生效,对于githubheroku,直到你add 然后commit 本地更改,最后push 他们到远程存储库即GithubHeroku

【讨论】:

非常感谢您花时间帮助我!就我而言,这是一个粗心的错误。【参考方案2】:

对于 heroku 部署,您不需要在 requirements.txt 文件中的 virtualenv==1.8.4.post1,请将其删除并将 procfile 和需求放在 git 的根目录中。

【讨论】:

【参考方案3】:

错误消息表明它找不到virtualenv==1.8.4.post1,当我在本地尝试该命令时,我得到了同样的错误。 pypi 中似乎不存在该版本。尝试将您的 requirements.txt 更改为 virtualenv==1.8.4

【讨论】:

以上是关于将 Django 项目推送到 Heroku 时出错的主要内容,如果未能解决你的问题,请参考以下文章

将 Django 应用程序推送到 Heroku 后,Dynos 字段为空白

推送到 Heroku 时出错:找不到模块“node-linux-x64/package.json”

每当我尝试将我的 django 应用程序推送到 Heroku 时,我的日志文件中都会出现以下错误,请协助我应该如何解决它,

防止 Django SQLite db 在推送到 Heroku 时被覆盖

将具有 node_modules 的本地 Node.js 项目 Git 存储库推送到 Heroku 时,本地 node_modules 是不是会覆盖 Heroku 上的那些?

推送到 Heroku 后“用户密码验证失败”