django-pipeline 和 s3boto 存储似乎不能一起工作

2024-06-02

我尝试将 django-pipeline-1.1.27 与 s3boto 一起使用来压缩和过滤静态文件,然后将它们上传到 s3 存储桶。如果我只是使用:

PIPELINE_STORAGE = 'pipeline.storage.PipelineFinderStorage'

然后它起作用了,我得到一个静态文件夹,其中包含我配置的良好版本化文件。一旦我切换到

PIPELINE_STORAGE = 'storages.backends.s3boto.S3BotoStorage'

I get

Traceback (most recent call last):
  File "manage.py", line 15, in <module>
    execute_manager(settings)
  File "/my/virtual/env/lib/python2.7/site-packages/django/core/management/__init__.py", line 438, in execute_manager
    utility.execute()
  File "/my/virtual/env/lib/python2.7/site-packages/django/core/management/__init__.py", line 379, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/my/virtual/env/lib/python2.7/site-packages/django/core/management/base.py", line 191, in run_from_argv
    self.execute(*args, **options.__dict__)
  File "/my/virtual/env/lib/python2.7/site-packages/django/core/management/base.py", line 220, in execute
    output = self.handle(*args, **options)
  File "/my/virtual/env/lib/python2.7/site-packages/pipeline/management/commands/synccompress.py", line 39, in handle
    packager.pack_stylesheets(package, sync=sync, force=force)
  File "/my/virtual/env/lib/python2.7/site-packages/pipeline/packager.py", line 52, in pack_stylesheets
    **kwargs)
  File "/my/virtual/env/lib/python2.7/site-packages/pipeline/packager.py", line 60, in pack
    package['output'], package['paths'])
  File "/my/virtual/env/lib/python2.7/site-packages/pipeline/versioning/__init__.py", line 45, in need_update
    version = self.version(paths)
  File "/my/virtual/env/lib/python2.7/site-packages/pipeline/versioning/__init__.py", line 20, in version
    return getattr(self.versioner, 'version')(paths)
  File "/my/virtual/env/lib/python2.7/site-packages/pipeline/versioning/hash/__init__.py", line 37, in version
    buf = self.concatenate(paths)
  File "/my/virtual/env/lib/python2.7/site-packages/pipeline/versioning/hash/__init__.py", line 27, in concatenate
    return '\n'.join([self.read_file(path) for path in paths])
  File "/my/virtual/env/lib/python2.7/site-packages/pipeline/versioning/hash/__init__.py", line 31, in read_file
    file = storage.open(path, 'rb')
  File "/my/virtual/env/lib/python2.7/site-packages/django/core/files/storage.py", line 33, in open
    file = self._open(name, mode)
  File "/my/virtual/env/lib/python2.7/site-packages/storages/backends/s3boto.py", line 177, in _open
    raise IOError('File does not exist: %s' % name)
IOError: File does not exist: css/style.css

这是我的之一source文件。那么,当我切换到 s3boto 存储时,为什么管道不再需要执行过滤/连接/压缩步骤呢?

也许我正在做某事。这是其他配置,以防有帮助:

INSTALLED_APPS = (
    ...
    'pipeline',
    'storages',
)

STATICFILES_FINDERS = (
    'pipeline.finders.PipelineFinder',
    'django.contrib.staticfiles.finders.FileSystemFinder',
    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
)

STATIC_ROOT = "/some/path/outside/django_project/deploy_static"
STATICFILES_DIRS = () # All statics in this site are in apps

STATICFILES_STORAGE = 'pipeline.storage.PipelineStorage'
PIPELINE_STORAGE = 'storages.backends.s3boto.S3BotoStorage'

PIPELINE = True
PIPELINE_AUTO = True
PIPELINE_VERSION = True
PIPELINE_VERSION_PLACEHOLDER = 'VERSION'
PIPELINE_VERSIONING = 'pipeline.versioning.hash.SHA1Versioning'

PIPELINE_CSS = {
    'standard': {
        'source_filenames': (
          'css/style.css',
          ...
        ),
        'output_filename': 'css/all-VERSION.css',
        'extra_context': {
            'media': 'screen,projection',
        },
    }
}

我的网站使用的是 Django 1.3.1。

我正在运行的命令是:

python manage.py synccompress --force

AWS 凭证也在设置中,但这毫无意义,因为它甚至还没有达到这一点。

UPDATE添加了评论中要求的完整堆栈和设置

UPDATE应库作者的要求,我尝试升级到最新的测试版。到目前为止的观察结果:

  1. 我现在不知道如何获取版本压缩文件
  2. collectstatic 留给我压缩文件and原件
  3. 配置 boto 存储时,仍然从 django-pipeline 收到相同的错误:它想要发送我的source文件到 s3,但我什至看不到它在哪里暂存我的资产。 STATIC_ROOT 中没有放置任何内容。

UPDATE我创建了最简单的项目,适用于查找器存储,然后与 S3Boto 中断。我已将其推送到 github,并包含了堆栈跟踪的捕获。

https://github.com/estebistec/simple_pipeline https://github.com/estebistec/simple_pipelinehttps://raw.github.com/estebistec/simple_pipeline/master/STACKTRACE

如果有人告诉我我正在做一些非常愚蠢的事情并且这一切应该都能奏效,我会感到欣喜若狂。


django-pipeline 1.1.x关于如何使用静态文件有点愚蠢,它更喜欢将所有内容放在一个地方。 我建议你尝试一下django-pipeline 1.2与最新的django-staticfiles or django 1.4.

使用这样的自定义:

STATICFILES_STORAGE = 'your.app.S3PipelineStorage'

代码如下所示:

from staticfiles.storage import CachedFilesMixin

from pipeline.storage import PipelineMixin

from storages.backends.s3boto import S3BotoStorage


class S3PipelineStorage(PipelineMixin, CachedFilesMixin, S3BotoStorage):
     pass

您可以找到如何修复您的应用程序,但编译文件仍然存在错误,除非您使用版本 1.2c1 :https://gist.github.com/1999564 https://gist.github.com/1999564

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

django-pipeline 和 s3boto 存储似乎不能一起工作 的相关文章

随机推荐

  • 如何检查 Xcode 使用的 LLVM 编译器版本?

    我在 OS X 10 8 2 上使用 Xcode 4 5 2 我如何知道 Xcode 使用的是哪个版本的 LLVM 编译器 从命令行 07 40 35 andrew iMac SalesIQ siq 303 llvm gcc v Using
  • TRichEdit和URL高亮问题

    我正在使用当前代码在 TRichEdit 上突出显示 URL procedure TForm1 WndProc var Message TMessage var p TENLink strURL string begin if Messag
  • 设置列表中前 10 项的样式

    可以使用像 li nth child 这样的东西来设置列表中前十项的样式吗 ol li item 1 li li item 2 li li item 3 li li item 4 li li item 5 li li item 6 li l
  • C# 'out' 或 'ref' 参数的值何时实际返回给调用者?

    当我向某个人分配任务时out or ref参数 是立即分配给调用者提供的引用的值 或者是out and ref当方法返回时分配给引用的参数值 如果方法抛出异常 是否返回值 例如 int callerOutValue 1 int caller
  • 生成单调递增整数(最大 64 位)

    作为新项目的一部分 我们需要一个可以生成单调递增整数的服务 该服务的要求是 服务不需要生成连续的整数 只要它生成单调递增的整数就应该没问题 它应该产生 64 位整数 该服务应该具有高可用性 服务应该能够适应故障 或重新启动 我本来打算使用r
  • Rails 引擎 - 简单的可能引擎(1)添加模型并(2)在包含类中添加关联

    我正在尝试编写我的第一个引擎 但在以下场景中遇到问题 在主机应用程序中 我将拥有具有名称的用户模型 这是保证的 因此在引擎中我可以引用用户类而不是某种程度的间接 在引擎中 我将有一个帖子模型 并且需要在帖子模型和包含应用程序中的用户模型之间
  • Mac Snow Leopard 上的 Curb gem 出现问题

    这消耗了我几个小时的时间 在控制台中我运行 require curb 我收到错误 LoadError dlopen usr local lib ruby gems 1 8 gems taf2 curb 0 5 4 0 lib curb co
  • 根据上下文翻译句子的部分内容

    我正在开发一个需要能够翻译部分句子的应用程序 问题是 如果我将这些部分发送到像 Google Translate 这样的翻译 API 翻译通常在它们出现的上下文中没有意义 示例 He leaves建筑物 如果我翻译一下leaves对于任何目
  • YouTube 视频内容涵盖 IE < 9 中的 CSS 下拉菜单

    我使用 CSS 创建了下拉菜单 并将 YouTube 视频放置在导航栏下方的框中 使用 IE 8 时 下拉菜单落后于 YouTube 视频 尽管带有导航栏的 div 的 z index 比带有 YouTube 视频的 div 更高 该问题在
  • 从向量获取特征对象引用

    我正在努力从 a 中获取元素Vec这是一生的参考 我将我的代码简化为 pub trait Runnable pub struct RunList lt a gt runnables Vec lt a mut Runnable gt impl
  • 如何跨多个文本文件查找字典中键的频率?

    我应该计算文档 individual articles 中所有文件中字典 d 的所有键值的频率 这里 文档 individual articles 大约有20000个txt文件 文件名为1 2 3 4 例如 假设 d Britain 5 7
  • 属性和依赖属性有什么区别

    依赖属性的创建方式与属性相同 依赖属性是否仅在创建自定义控件时使用 依赖属性和标准属性有很大不同 依赖属性提供的关键功能是支持binding and 动画片 如果您想使用Binding或模板绑定该属性需要是依赖属性 当对属性进行动画处理时
  • Spark Python:标准缩放器错误“不支持... SparseVector”

    我又撞到了堵墙 我是一个新手 所以我不得不再次依赖你强大的知识 我从一个数据集开始 如下所示 user account id user lifetime user no outgoing activity in days user acco
  • NVD3 - 配置轴上的刻度

    我有一个 nvd3 折线图 它显示时间序列 但无法在 x 轴右侧获取刻度 对于较长的时间跨度 它会按预期工作 但对于较短的时间跨度 此处 12 31 05 至 01 01 06 多个刻度显示相同的日期 请看一下JSFiddle 上此图表的代
  • 具有作用域原型的 bean 和单例 bean 中的 new Object 有什么区别?

    就像主题中一样 我没有看到这些方法之间有任何区别 当我只使用那些时 原型 bean 就很清楚了 但在 Spring 中 我们基于单例的 bean 因此当我在单例 bean 中使用带有作用域原型的 bean 时 它看起来就像我想创建新的对象一
  • wtforms 自定义验证器可以使字段可选吗?

    如果选中复选框 我正在使用自定义验证器来检查字段不为空 它检查正确 但无论如何它总是仍然验证该值是否是数字 基本上我需要一个字段来在表单的某些条件下停止验证 有没有办法让自定义验证器停止现场验证 是的 自定义验证器可以像内置的可选和必需验证
  • OSX 通过 macports 安装 subversion 时出错

    我正在尝试安装 subversion 1 7 2 从默认的 Lion 版本 1 6 升级 跑步sudo port install subversion安装成功完成 但是在运行 svn version 时收到此错误 svn version d
  • 使用 C# 以编程方式登录网站

    因此 我一直在网上搜索 试图了解有关如何使用 C 以编程方式登录网站的更多信息 我不想使用网络客户端 我想我想使用 HttpWebRequest 和 HttpWebResponse 之类的东西 但我不知道这些类是如何工作的 我想我正在寻找某
  • C# 用户控件作为自定义面板

    我创建自己的用户控件 其中仅包含一个面板 当我在设计器中拖动 myPanel 对象 然后尝试在其上添加按钮时 该按钮实际上已添加到表单的控件中 是否有我必须设置的属性 属性才能执行此操作 这是执行我想要的操作的另一种方式 public cl
  • django-pipeline 和 s3boto 存储似乎不能一起工作

    我尝试将 django pipeline 1 1 27 与 s3boto 一起使用来压缩和过滤静态文件 然后将它们上传到 s3 存储桶 如果我只是使用 PIPELINE STORAGE pipeline storage PipelineFi