Heroku& Django:" OSError:没有这样的文件或目录:' / app / {myappname} / static'"

时间:2013-10-11 16:59:15

标签: python django git heroku django-staticfiles

我在Heroku上有一个Django应用程序。我在使用静态文件时遇到了一些问题(它们在一个Heroku environment但不是另一个文件中加载),所以我尝试了调试命令here

$ heroku run python manage.py collectstatic --noinput
Running `python manage.py collectstatic --noinput` attached to terminal... up, run.8771
OSError: [Errno 2] No such file or directory: '/app/{myappname}/static'

这是我的settings.py,这与Heroku建议的相同:

import os
import os.path

BASE_DIR = os.path.dirname(os.path.abspath(__file__))
STATIC_ROOT = 'staticfiles'
STATIC_URL = '/static/'

STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'static'),
)

我得到的错误是否在我的Git仓库中的根级别实际上有一个“静态”目录(以两种方式测试)。

有什么想法吗?

3 个答案:

答案 0 :(得分:46)

它正在寻找一个名为'static'的文件夹,它位于settings.py的旁边,即在项目文件夹中,而不是在git repo的根目录下。

git root/
git root/{app name}
git root/{app name}/settings.py
git root/{app name}/static/         <- this is what you're missing

请注意,git不会跟踪空文件夹,因此如果空文件为空,则必须在其中放置一个空白文件。或者,删除STATICFILES_DIRS设置,直到您需要它为止。

答案 1 :(得分:13)

我刚遇到同样的问题,这是适用于我的解决方案:

我改变了:

STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'static'),
)

为:

STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'myappfolder/static'),
)

答案 2 :(得分:1)

@ joerick上面的答案是关键。但是,如果你不想放置另一个静态的&#39;文件夹(git root / {your app} / static),您可以考虑更改最初由django-admin makeproject提供的BASE_DIR变量:

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

只是(git root /)目录