无法执行 collectstatic
Posted
技术标签:
【中文标题】无法执行 collectstatic【英文标题】:Unable to perform collectstatic 【发布时间】:2014-06-06 14:11:11 【问题描述】:我是 django 的新手!当我使用命令python manage.py collectstatic
时出现此错误
django.core.exceptions.ImproperlyConfigured: You're using the staticfiles app without having set the STATIC_ROOT setting to a filesystem path
但是我可以成功运行服务器。
我的静态文件声明是:
STATIC_ROOT = ''
STATIC_URL = '/static/'
STATICFILES_DIRS = (
('assets', os.path.join(PROJECT_DIR, '../static')),
)
调试设置为真
DEBUG = True
我该如何解决这个问题?否则我缺少任何安装包?
【问题讨论】:
heroku ***.com/questions/21141315/… 【参考方案1】:您必须在 settings.py 中的 STATIC_ROOT 中提供路径,其中收集了所有静态文件,例如:-
STATIC_ROOT = "app-root/repo/wsgi/static"
STATIC_URL = '/static/'
STATICFILES_DIRS = (
('assets', 'app-root/repo/wsgi/openshift/static'),
)
【讨论】:
【参考方案2】:试试这个,
PROJECT_DIR = os.path.dirname(os.path.abspath(__file__))
STATIC_ROOT = os.path.join(PROJECT_DIR, 'static')
看https://docs.djangoproject.com/en/dev/ref/settings/#std:setting-STATIC_ROOT
【讨论】:
谢谢 :) 工作!在我使用此应用程序之前,静态根为空。但它奏效了!现在可能是什么问题? 您需要定义静态文件夹。因此所有静态文件都收集在该文件夹中。You're using the staticfiles app without having set the STATIC_ROOT setting to a filesystem path
【参考方案3】:
我必须将STATIC_ROOT
和STATIC_URL
放在STATICFILES_DIRS
声明之上。
【讨论】:
【参考方案4】:STATIC_ROOT = "/var/www/YourSiteFolder/static/"
STATIC_URL = '/static/'
看https://docs.djangoproject.com/en/1.11/howto/static-files/#deployment
【讨论】:
【参考方案5】:也有这个错误。我修好了:
STATIC_URL = '/static/'
if DEBUG:
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static'),
]
else:
STATIC_ROOT = os.path.join(BASE_DIR,'static')
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
【讨论】:
【参考方案6】:您可以在任何子文件夹中创建“静态”文件夹并在其中包含所需的文件。 在 settings.py 中添加以下代码行:
PROJECT_DIR = os.path.dirname(os.path.abspath(__file__))
STATIC_ROOT = os.path.join(PROJECT_DIR, 'static')
STATIC_URL = '/static/'
运行后
python manage.py collectstatic
将在您的父 App 文件夹中创建一个新的静态文件夹
【讨论】:
【参考方案7】:STATIC_ROOT = os.path.join(BASE_DIR, 'assest')
STATICFILES_DIR = [
os.path.join(BASE_DIR, 'static')
]
【讨论】:
感谢您提供此代码 sn-p,它可能会提供一些有限的即时帮助。 proper explanation 将通过展示为什么这是解决问题的好方法,并使其对有其他类似问题的未来读者更有用,从而大大提高其长期价值。请edit您的回答添加一些解释,包括您所做的假设。 有一个错字:“assets”以上是关于无法执行 collectstatic的主要内容,如果未能解决你的问题,请参考以下文章
Django collectstatic 无法使用 S3 进行生产,但相同的设置在本地工作
使用带有 Compressor 的 Boto 的 Django AWS S3 无法压缩 UncompressableFileError