无法在使用Python的Heroku教程中启动Foreman

41

我一直在尝试完成这个教程,但在foreman start一行遇到了问题。我使用的是 Windows 7 64 位计算机并尝试在 Heroku Toolbelt 提供的 git bash 终端中完成操作。

当我输入foreman start时,会收到以下提示:

sh.exe": /c/Program Files (x86)/Heroku/ruby-1.9.2/bin/foreman: "c:/Program: bad
interpreter: No such file or directory

所以我尝试在git bash中输入cmd,然后使用foreman start(类似于对这个问题的答案之一评论建议的方式)。 这是它产生的结果:

Bad file descriptor
c:/Program Files (x86)/Heroku/ruby-1.9.2/lib/ruby/gems/1.9.1/gems/foreman-0.62.0
/lib/foreman/engine.rb:377:in `read_nonblock'
c:/Program Files (x86)/Heroku/ruby-1.9.2/lib/ruby/gems/1.9.1/gems/foreman-0.62.0
/lib/foreman/engine.rb:377:in `block (2 levels) in watch_for_output'
c:/Program Files (x86)/Heroku/ruby-1.9.2/lib/ruby/gems/1.9.1/gems/foreman-0.62.0
/lib/foreman/engine.rb:373:in `loop'
c:/Program Files (x86)/Heroku/ruby-1.9.2/lib/ruby/gems/1.9.1/gems/foreman-0.62.0
/lib/foreman/engine.rb:373:in `block in watch_for_output'
21:06:08 web.1  | exited with code 1
21:06:08 system | sending SIGKILL to all processes

对于第二组错误,我毫无头绪,因为它似乎声称engine.rb正在运行的文件位置在我的计算机上甚至不存在。

我查看了其他类似问题的答案,但是由于我没有收到类似的错误,所以我认为当前不存在解决我的问题的方法。

4个回答

70

我遇到了这个问题,通过卸载版本为0.62的foreman宝石并安装0.61版本来解决它。

gem uninstall foreman
gem install foreman -v 0.61

但是,您是否知道我如何查看页面?我尝试在Chrome浏览器中输入0.0.0.0和0.0.0.0:5000,但出现错误108。我在单独的Git Bash终端中尝试了“curl 0.0.0.0”和“curl 0.0.0.0:5000”,但它们都给出了“curl:(7)无法连接到主机”的错误信息。有什么想法吗? - user1167662
好的,我成功地在Heroku上部署后访问了它,但我仍然想知道如何在使用Foreman进行测试时访问它? - user1167662
2
如果您按照Heroku指南操作,网站应该在127.0.0.1:5000或localhost:5000上运行。 - Eric Speelman
安装了Foreman 0.61之后,在"foreman start"命令中出现以下错误:02:54:38 web.1 | 进程号6504启动成功 02:54:38 web.1 | 最近的调用堆栈如下: 02:54:38 web.1 | File "C:\Python27\Scripts\gunicorn-script.py", line 9, in <module> ...02:54:38 web.1 | File "C:\Python27\lib\site- packages\distribute-0.6.28-py2.7.egg\pkg_resources.py", line 2311, in load_entry_point 02:54:38 web.1 | 退出码为1 02:54:38 system | 发送SIGKILL信号给所有进程 02:54:38 | return ep.load() - RexE
我在Mac上也遇到了类似的错误...... Foreman无法启动,因为出现了“命令未找到”的错误。我认为可能是$PATH问题,因为我刚刚更新到了Ruby 1.9.3,但我刚刚用'foreman start'安装好了它!然后我运行了'bundle install'来获取我的应用程序所需的其余gems。 - ATSiem
2
Heroku的用户体验不好。这是2014年,但这个问题仍未解决。如果我们不能使用带有空格的目录安装它,就告诉我们。现在,安装foreman 0.61仍然无法正常工作,出现“ImportError: No module named fcntl”的错误。太糟糕了,非常糟糕...我想我会在OSX上做这件事。我相信体验会不同...希望如此。 - swdev

11

是的,截至目前(2013年8月30日),heroku-toolbelt-installer无法正常工作。

以下步骤适用于Windows系统:

  1. 卸载Heroku(通过Windows“程序卸载”)
  2. 将Heroku安装到C:\bin\heroku(即“无空格”):https://toolbelt.heroku.com/windows
  3. http://rubyinstaller.org/downloads/中安装Ruby
  4. 在命令提示符中运行“gem install foreman -v 0.61”。“gem install foreman”会安装v0.63,但不能用于“foreman start”
  5. 在命令提示符中运行“foreman start”,即可启动Heroku的Hello World示例

1
我应该使用哪个版本的Ruby? - swdev

6
卸载Heroku工具包并重新安装到不带空格的路径,例如C:\heroku\,这将有所帮助。除此之外,目前Heroku Windows安装程序存在严重问题,这对我们来说并不值得骄傲。为了解决Foreman的问题,您可以使用export VAR=VALUE设置环境变量,然后使用Procfile中的任何命令运行应用程序。未来情况将有所改善。

1
我该如何卸载它?我似乎找不到任何建议的说明,但当我尝试使用控制面板中的“删除程序”(针对“Herkou 2.35.0”)时,它说无法卸载,并表示可能是因为已经卸载了? - user1167662
2
路径建议对“坏文件描述符”问题没有帮助。 - Ates Goral

0
需要补充的一点是,如果您将Heroku安装到带有空格的目录中,那么在Windows上尝试执行gem install foreman -v 0.61时也会导致错误。
一旦我将Heroku重新安装到C:\Heroku而不是C:\Program Files\Heroku,然后我就可以使用Eric Speelman上面的解决方案使其正常工作了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接