Django Deploy使用Heroku - [Errno 2]没有这样的文件或目录

时间:2012-04-17 23:38:29

标签: python django heroku

我将repo推送到heroku master后,我收到此错误([Errno 2]没有这样的文件或目录)。这是我的日志。

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

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

4 个答案:

答案 0 :(得分:11)

您在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

答案 1 :(得分:0)

您可以将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目录

答案 2 :(得分:0)

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

稍后编辑:

尝试运行这三个命令以使heroku master:

  • pip install -r ./requirements.txt

  • foreman start

  • heroku create mempy-demo --stac=cedar

  • git push heroku master

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

$ curl mempy-demo.herokuapp.com

答案 3 :(得分:0)

您可以执行以下操作来更改环境变量(例如,如果出现错误,请将其添加到wsgi.py文件中):

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