首页 > 解决方案 > collectstatic 指的是错误的目录

问题描述

我遇到了一个我似乎无法找到根本原因的问题。

当我运行“collectstatic”命令时,我得到错误文件未找到。我可以看到它试图将文件放在错误的目录中。

首先在运行命令后我得到这个问题

您已请求在设置中指定的目标位置收集静态文件:

/var/www/projects/foobar/foobar/static

哪个是对的。但我得到这个错误:

FileNotFoundError:[Errno 2] 没有这样的文件或目录:'/var/www/projects/foobar/foobar/foobar/static'

这就是'foobar'的一个目录。

这是我的生产设置:

STATICFILES_DIRS = [
    os.path.join(BASE_DIR, "static"),
]

MEDIA_ROOT = '/var/www/projects/foobar/foobar/media'
MEDIA_URL = '/media/'

STATIC_ROOT = '/var/www/projects/foobar/foobar/static'
STATIC_URL = '/static/'

为什么它会增加一个额外的 'foobar' 目录?

标签: pythondjangopython-3.x

解决方案


您在 STATIC_ROOT 中指定的路径可能不正确,使用 os.path.join 可以解决此错误,因为它是指定相对于项目目录的路径的更好方法。

请在您的代码中进行以下更改:

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

STATIC_URL = '/静态/'

然后尝试再次运行您的项目。我建议对 MEDIA_ROOT 和 MEDIA_URL 也进行相同的更改,因为它是一种更好的编码实践。


推荐阅读