web-dev-qa-db-ja.com

Heroku&Django: "OSError:No such file or directory: '/ app / {myappname} / static'"

私はDjango Heroku上のアプリです。静的ファイルに問題があります(あるHeroku environment でロードされていますが、別のHerokuではロードされていません)。デバッグを試しました。コマンドを推奨 ここ

$ 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リポジトリのルートレベルに実際に「静的」なディレクトリがあるかどうかに関係なく、エラーが発生します(両方でテストしました)。

何か案は?

32
RexE

Gitリポジトリのルートではなく、プロジェクトフォルダー内のsettings.pyの隣にある「静的」という名前のフォルダーを探しています。

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必要になるまで設定します。

46
joerick

私はこれと同じ問題を抱えていました、そして私のために働いた解決策があります:

私が変更され:

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

に:

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

上記の@joerickの答えは事です。ただし、別の「静的」フォルダー(git root/{your app}/static)を配置したくない場合は、Django-admin makeprojectによって最初に提供されるBASE_DIR変数を変更することを検討してください。

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

(git root /)ディレクトリです

1
Dima