【问题标题】:Django Deploy using Heroku - [Errno 2] No such file or directoryDjango Deploy using Heroku - [Errno 2] 没有这样的文件或目录
【发布时间】:2012-04-29 08:29:01
【问题描述】:

在我将 repo 推送到 heroku master 后,我得到了这个错误([Errno 2] No such file or directory)。这是我的日志。

2012-04-17T18:24:53+00:00 app[web.1]: python: can't open file '/test/project/manage.py': [Errno 2]     No such file or directory

2012-04-17T18:24:54+00:00 heroku[web.1]: Process exited with status 2

2012-04-17T18:24:54+00:00 heroku[web.1]: State changed from starting to crashed

2012-04-17T18:24:54+00:00 heroku[web.1]: State changed from crashed to created

2012-04-17T18:24:54+00:00 heroku[web.1]: State changed from created to starting

2012-04-17T18:24:57+00:00 heroku[web.1]: Starting process with command python /test/project/manage.py runserver 0.0.0.0:4473 --noreload 2012-04-17T18:24:57+00:00 app[web.1]: python: can't open file '/test/project/manage.py': [Errno 2] No such file or directory

我的 Procfile 如下所示:

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

我不知道为什么它无法打开文件。当我使用我的开发服务器时,它可以正常打开。有任何想法吗?谢谢阅读。

【问题讨论】:

  • 你在推送本地仓库的主分支吗?
  • 我想是的。如果我做 git branch 我唯一看到的是 *master

标签: python django heroku


【解决方案1】:

您可以将ls 附加到heroku 以了解文件系统的实际结构。

> heroku run ls /
Running ls / attached to terminal... up, run.1
app  dev  home  lib64       mnt   sbin  usr
bin  etc  lib   lost+found  proc  tmp   var

可能是他们将您的应用包装在 app 目录中

【讨论】:

  • 因此.. 你可能想改用web: python /app/test/project/manage.py runserver 0.0.0.0:$PORT --noreload
【解决方案2】:

尝试使用os.path 加入路径的元素。顺便说一句,您是否尝试将 ProcFile 更改为从工作人员读取? python hellodjango/manage.py

稍后编辑:

尝试运行这三个命令以使 heroku 成为大师:

  • pip install -r ./requirements.txt

  • foreman start

  • heroku create mempy-demo --stac=cedar

  • git push heroku master

现在测试一个简单的“Hello World”:

$ curl mempy-demo.herokuapp.com

【讨论】:

  • 我更新了我的答案。它现在必须工作,通过放置 heroku master。
【解决方案3】:

您在 Procfile 中的当前设置引用了 Heroku 上不存在的绝对路径“/test/project/manage.py”。 '/test/ 是您正在运行的实例的根目录并且不正确。您应该首先将其更改为相对路径,这可能类似于:

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

如果这不起作用,您可以通过运行来探索项目的位置:

heroku run bash

这应该将您放置在“/app”中,从这里您可以看到启动项目的路径是什么。

由于您的初始推送可能无法启动流程,您可能需要扩展 Web 流程。然后你可以这样做:

heroku scale web=1

【讨论】:

    【解决方案4】:

    您可以执行类似的操作来更改环境变量(例如,如果这是错误的来源,请将其添加到您的 wsgi.py 文件中):

    os.environ["DJANGO_SETTINGS_MODULE"] = "myblog.settings"                                                                
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myblog.settings")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-30
      • 2020-07-09
      • 2019-11-20
      • 2015-11-19
      • 2013-03-21
      • 2015-04-09
      相关资源
      最近更新 更多