将 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 所做的任何更改都不会生效,对于github
和heroku
,直到你add
然后commit
本地更改,最后push
他们到远程存储库即Github 或 Heroku。
【讨论】:
非常感谢您花时间帮助我!就我而言,这是一个粗心的错误。【参考方案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 上的那些?