Python 在Django Assets/Webassets中设置要从中编译的目录时出现问题

Python 在Django Assets/Webassets中设置要从中编译的目录时出现问题,python,django,Python,Django,这是我当前的assets.py文件: from django_assets import Bundle, register sass = Bundle( 'build/main.sass', filters='sass', output='css/main.css' ) register('sass', sass) 现在我遇到了一个问题,它说另一个bundle已经注册为“sass”,但没有看到如何注销它 无论如何,我将register('sass',sass)更改为

这是我当前的
assets.py
文件:

from django_assets import Bundle, register

sass = Bundle(
    'build/main.sass',
    filters='sass',
    output='css/main.css'
)

register('sass', sass)
现在我遇到了一个问题,它说另一个bundle已经注册为“sass”,但没有看到如何注销它

无论如何,我将
register('sass',sass)
更改为
register('sass_all',sass)
,以克服错误。当我去编译时,它正在我的
脚本
目录中查找,我将
manage.py
保存在那里。在
settings.py
I中添加:

ASSETS_ROOT = [
  'static',
]
它只有
脚本/static
中不存在的look

尝试:

# This is already in settings.py
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static'),
]

# Added new line
ASSETS_ROOT = [
    STATICFILES_DIRS,
]
它生成了两个错误:
KeyError:'directory'
OSError:environment没有配置“directory”
,而
AttributeError:'list'对象没有属性“startswith”
。实际上,我认为,
目录
没有定义只是一个错误

鉴于我的技能水平,通读这篇文章是含糊不清的。在
assets.py中
Environment
添加到
import
只是说
无法在Environment中导入
。添加
环境。目录('static')
导致未定义
环境。只需
目录('static')
也会导致
目录未定义
env=Environment()
同样的事情。尝试将
directory='/static'
添加到
sass=Bundle(…)
中,它只是说
TypeError:得到了意外的关键字参数“directory”

不管怎么说,花了几个小时在上面,然后又卡住了。文档似乎表明
目录
设置应进入
assets.py
而不是
settings.py
,而
assets\u ROOT
应进入
settings.py

再次提前感谢

~/portal-client

project_dir
    apps
        account
            templates
                account
                    login.html
            forms.py
            urls.py
            views.py
        home
            templates
                home
                    home.html
            urls.py
            views.py
        results
    assets.py
    settings.py
    urls.py
scripts
    manage.py
static
    build
        main.js
        main.sass
    css
        app.css 
        main.css
    js
        app.js
        main.js
    media
templates
    base.html
    footer.html
    title.html
继续回答这个问题:

请注意:

# This is already in settings.py
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static'),
]
# After this line STATICFILES_DIRS is `[ 'BASE_DIR/static' ]`

# Added new line
ASSETS_ROOT = [
    STATICFILES_DIRS,
]
# After this line, ASSETS_ROOT is `[ [ 'BASE_DIR/static' ] ]`
# i.e., an array of arrays 
# I think you actually wanted:
ASSETS_ROOT = STATICFILES_DIRS[0] 
# - or more explicitly -
ASSETS_ROOT = os.path.normpath(os.path.join(BASE_DIR, 'static'))

也就是说,这些问题中的许多似乎是由相当非标准的django结构引起的(即,
manage.py
位于
scripts
目录中,而不是位于
BASE\u DIR

再次感谢你第三次提到这个话题!工作很好,缓存破坏也很好(不希望保留每个版本,但至少它选择了最新的,但我会在这一点上采取我能得到的…混乱是另一天的主题)。真正深入Django!