将附加文件添加到 Trac 插件
Adding additional files to a Trac plugin
我正在为 Trac 编写一个插件,并想将一些额外的文件(例如 css 个文件)放入我的插件中。
我正在使用 egg-link 到我的源目录,并从那里加载插件,但找不到 css 文件。所以我想也许它会相对于 egg-link 的路径进行搜索,但它也没有用。
是否可以将这些文件添加到插件中,还是必须将它们作为字符串放入脚本中?如果可能的话,它在使用 egg-link?
时在哪个(相对)目录中搜索文件
使用 ITemplateProvider 提供静态资源。假设您有一个典型的目录结构,如下所示:
codereviewplugin
codereview
htdocs
css
codereview.css
在您的一个插件 Component
类 中,在本例中它可能在模块 web_ui.py
中被命名为 CodeReviewModule
,您将实现 ITemplateProvider
与:
def get_htdocs_dirs(self):
from pkg_resources import resource_filename
return [('codereview', resource_filename(__name__, 'htdocs')]
然后您可以使用调用 add_stylesheet('codereview/css/codereview.css')
.
将 CSS 文件添加到模板
你还必须在setup.py
中注册文件,否则在可编辑模式(egg-link)下安装egg时它可能会起作用,但在正常的egg安装中不起作用:
packages=['codereview'],
package_data = {'codereview': ['htdocs/css/*.css'}
Trac核心中有很多例子,比如Chrome.
我正在为 Trac 编写一个插件,并想将一些额外的文件(例如 css 个文件)放入我的插件中。
我正在使用 egg-link 到我的源目录,并从那里加载插件,但找不到 css 文件。所以我想也许它会相对于 egg-link 的路径进行搜索,但它也没有用。
是否可以将这些文件添加到插件中,还是必须将它们作为字符串放入脚本中?如果可能的话,它在使用 egg-link?
时在哪个(相对)目录中搜索文件使用 ITemplateProvider 提供静态资源。假设您有一个典型的目录结构,如下所示:
codereviewplugin
codereview
htdocs
css
codereview.css
在您的一个插件 Component
类 中,在本例中它可能在模块 web_ui.py
中被命名为 CodeReviewModule
,您将实现 ITemplateProvider
与:
def get_htdocs_dirs(self):
from pkg_resources import resource_filename
return [('codereview', resource_filename(__name__, 'htdocs')]
然后您可以使用调用 add_stylesheet('codereview/css/codereview.css')
.
你还必须在setup.py
中注册文件,否则在可编辑模式(egg-link)下安装egg时它可能会起作用,但在正常的egg安装中不起作用:
packages=['codereview'],
package_data = {'codereview': ['htdocs/css/*.css'}
Trac核心中有很多例子,比如Chrome.