无法在 Heroku 教程中使用 Python 启动工头

Posted

技术标签:

【中文标题】无法在 Heroku 教程中使用 Python 启动工头【英文标题】:Can't start foreman in Heroku Tutorial using Python 【发布时间】:2013-03-02 05:35:57 【问题描述】:

我一直在尝试完成this tutorial,但遇到了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,方法是输入 cmd,然后使用 foreman start(类似于 a comment on one of the answers to this question 的建议)。这就是产生的结果:

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 的文件位置在我的计算机上甚至不存在。

我查看了类似问题的其他答案,但是我没有收到类似的错误,因此不相信目前存在解决我问题的方法。

【问题讨论】:

【参考方案1】:

需要补充的一点是,如果您将 Heroku 安装到带有空格的目录中,当您尝试执行 gem install foreman -v 0.61(在 Windows 上)时也会导致错误。

一旦我将 Heroku 重新安装到 C:\Heroku 而不是 C:\Program Files\Heroku 然后我就可以使用 Eric Speelman 的上述解决方案来完成这项工作。

【讨论】:

【参考方案2】:

是的,heroku-toolbelt-installer 目前无法正常工作(2013 年 8 月 30 日)。 对于 Windows,以下步骤对我有用:

    卸载heroku(通过windows'程序卸载') 将 heroku https://toolbelt.heroku.com/windows 安装到 C:\bin\heroku 中,即“无空格” 从http://rubyinstaller.org/downloads/ 安装 ruby​​ 在 cmd 中运行“gem install foreman -v 0.61”。是的,“gem install foreman”安装了 v0.63,对“foreman start”不起作用 在 cmd 中“foreman start”适用于 heroku hello-world 示例

【讨论】:

我应该使用哪个版本的 Ruby?【参考方案3】:

我遇到了这个问题。我通过卸载 0.62 版的工头 gem 并安装 0.61 来修复它。

gem uninstall foreman
gem install foreman -v 0.61

【讨论】:

但是,您是否知道我现在可以实际查看该页面?我尝试在我的 chrome Web 浏览器中访问 0.0.0.0 和 0.0.0.0:5000,但出现错误 108。我在单独的 git bash 终端中尝试了 curl 0.0.0.0curl 0.0.0.0:5000,这些都给了我 curl: (7) couldn't connect to host。有什么想法吗? 好的,我在部署到heroku后设法访问它,但我仍然想知道在与工头测试时如何访问它? 如果你遵循 Heroku 指南,网站应该在 127.0.0.1:5000 或 localhost:5000 上运行 安装工头 0.61 后,“工头启动”02:54:38 web.1 | started with pid 6504 02:54:38 web.1 | Traceback (most recent call last): 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 | exited with code 1 02:54:38 system | sending SIGKILL to all processes 02:54:38 | return ep.load() 出现此错误 Heroku 的用户体验不好。这是2014年,这个问题还没有解决。如果我们不能使用带空格的目录安装它,请告诉我们。现在,安装工头 0.61 仍然对我不起作用,`ImportError: No module named fcntl' 不酷。所以不酷......我想我会为此使用OSX。我相信体验会有所不同......我希望......【参考方案4】:

卸载 heroku 工具带并将其重新安装到其中没有空格的路径,例如 C:\heorku\ 会有所帮助。除此之外,heroku windows 安装程序目前已经严重损坏,这对我们来说并不是一件值得骄傲的事情。要解决 foreman 的问题,您可以使用 export VAR=VALUE 自行设置环境变量,然后使用您在 procfile 中输入的任何命令运行您的应用程序。

这将在未来得到改善。

【讨论】:

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

以上是关于无法在 Heroku 教程中使用 Python 启动工头的主要内容,如果未能解决你的问题,请参考以下文章

在 DjangoGirls 教程中无法部署到 Heroku

python脚本无法在heroku上托管的其他python脚本中调用fn

Discord bot 无法使用 Python 在 Heroku 上运行

使用 Heroku 的 DNSimple 无法正常工作

Heroku 教程错误运行 python manage.py syncdb 更新本地数据库

Heroku/python 无法检测到 set buildpack