返回项目目录
前端框架精选项目

Pelican

使用 Python、Jinja 和 Markdown 或 reStructuredText 构建内容网站的静态生成器。

主要语言Python
开源许可AGPL-3.0
项目类型前端框架
维护状态活跃维护
OVERVIEW

项目概述

Pelican 将 Article、Page 和结构化元数据交给 Jinja 主题生成静态网站,内置分类、标签、作者、Feed、多语言关联和内容导入,并可通过 Python 插件扩展。

Pelican 是采用 AGPL-3.0 许可证、使用 Python 编写的成熟静态站点生成器。它读取 Markdown、reStructuredText 或 HTML 内容,将 Article、Page、Author、Category、Tag 和 Translation 等对象交给 Jinja 主题,最终输出完全静态的网站。Pelican 提供简洁的命令行、内容缓存、Atom/RSS、Pygments 代码高亮和旧站导入工具,并通过 Python 命名空间插件与 Signal 扩展 Reader、Generator 和构建生命周期。

核心语言Python
模板引擎Jinja
默认输出目录output
FEATURES

主要特点

Pelican 将 Python 配置、清晰的文章与页面模型、Jinja 主题和信号插件组合成稳定的静态出版流程。

01

Article 与 Page

Article 表示带日期的文章,Page 表示 About、Contact 等非时序内容,并分别拥有独立 URL、模板和输出规则。

02

Markdown 与 reStructuredText

可使用 Markdown、reStructuredText 或 HTML 写作,并通过 Reader 插件支持 AsciiDoc 等额外输入格式。

03

灵活的内容元数据

Title、Date、Category、Tags、Authors、Slug、Summary、Status、Lang 和自定义字段可控制发布与主题渲染。

04

Jinja 主题系统

主题可使用继承、Macro、Filter 和丰富上下文构建首页、文章、页面、作者、分类、标签与归档页面。

05

分类、标签与作者

核心生成器会建立 Category、Tag、Author 及日期归档,并提供相应集合给 Jinja 模板和 Feed。

06

Feed 与多语言内容

可生成 Atom/RSS;相同标识的不同语言文章会建立翻译关联,更完整的多语言子站可通过插件实现。

07

Python 插件与 Signal

PyPI 命名空间插件可自动发现,并通过 Signal 添加 Reader、Generator、元数据处理、资源优化和发布后任务。

08

导入、缓存与选择性写入

工具可从 WordPress、Dotclear 和 Feed 导入内容,构建缓存与选择性输出则减少重复生成成本。

USE CASES

适用场景

适合熟悉 Python、希望用 Markdown 或 reStructuredText 管理长期内容,并部署到普通静态托管平台的项目。

Python 技术博客

Python 配置、Pygments、Markdown/reST 和 Jinja 对 Python 开发者自然,适合教程与工程文章。

开源项目网站

源码、文档和网站可共用 Git 工作流,Page、Feed 和静态部署适合项目主页与发布日志。

研究与学术写作

reStructuredText、脚注、代码块和自定义元数据适合研究笔记、实验记录与课程资料。

多作者出版

Author、Category、Tag、日期归档和 Feed 可组织团队博客、刊物和社区投稿。

迁移旧博客

导入工具可接收 WordPress、Dotclear 与 RSS 内容,再将结果纳入纯文本和 Git 管理。

Python 定制内容管线

插件、Signal、Reader 与 Generator 适合从 API、数据文件或专用格式生成额外页面和索引。

EVALUATION

优点与注意事项

技术选型不仅要看能力,也要理解它带来的团队成本。

主要优点

Pelican 擅长的地方

  • Python 配置与扩展直接,适合 Python 团队深度定制
  • 同时支持 Markdown 和 reStructuredText,覆盖博客与技术文档写作
  • Jinja 模板成熟,继承、Macro 和 Filter 便于维护主题
  • 文章、页面、作者、分类、标签、Feed 和翻译关联内置完整
  • 内容缓存和选择性写入能改善重复构建速度
  • 输出完全静态,无数据库和生产 Python 运行时要求

需要注意

采用前应考虑的问题

许可证需要确认

Pelican 本身采用 AGPL-3.0;组织在修改、分发或以网络服务方式提供修改版本前,应让法务确认相应义务。

Markdown 支持是可选依赖

安装时应使用 pelican[markdown] 或显式加入 Python-Markdown,并固定所需 Markdown Extension。

主题与插件质量不一

社区主题和插件由不同维护者提供,应检查 Pelican 版本兼容性、依赖安全、许可证和最后更新时间。

多语言整站需要插件

核心可关联文章翻译,但语言子目录、翻译模板和独立语言首页通常需要 i18n_subsites 等插件。

静态资源管线较自由

复杂的 Sass、JavaScript 打包、图片优化和指纹通常需要插件或独立前端工具,应提前设计构建顺序。

缓存可能隐藏配置变化

修改元数据插件或 Reader 后若结果未更新,应使用 --ignore-cache 或暂时关闭内容缓存再排查。

QUICK START

快速开始

在虚拟环境中安装带 Markdown 支持的 Pelican,运行交互式脚手架,添加文章、配置站点并生成 output 目录。

1创建环境并安装 Pelican
bash
python --version
python -m venv .venv
source .venv/bin/activate
python -m pip install "pelican[markdown]"

mkdir my-pelican-site
cd my-pelican-site
pelican-quickstart
2配置站点与文章地址
python
# pelicanconf.py
AUTHOR = "Open Source Notes"
SITENAME = "开源项目志"
SITEURL = ""
PATH = "content"
TIMEZONE = "Asia/Shanghai"
DEFAULT_LANG = "zh-cn"

ARTICLE_URL = "posts/{slug}/"
ARTICLE_SAVE_AS = "posts/{slug}/index.html"
PAGE_URL = "{slug}/"
PAGE_SAVE_AS = "{slug}/index.html"

DEFAULT_PAGINATION = 10
RELATIVE_URLS = True
3添加第一篇 Markdown 文章
markdown
Title: Hello Pelican
Date: 2026-07-24 10:00
Modified: 2026-07-24 10:00
Category: 开源工具
Tags: Pelican, Python, SSG
Slug: hello-pelican
Authors: Open Source Notes
Summary: 使用 Python 与 Jinja 发布第一篇静态文章

Pelican 可以读取 Markdown 或 reStructuredText,
并通过 Jinja 主题生成完全静态的网站。

## 下一步

将内容保存到 `content/hello-pelican.md`
4创建简单的 Jinja 首页
html
<!-- theme/templates/index.html -->
{% extends "base.html" %}

{% block content %}
  <main>
    <h1>{{ SITENAME }}</h1>

    {% for article in articles_page.object_list %}
      <article>
        <h2>
          <a href="{{ SITEURL }}/{{ article.url }}">
            {{ article.title }}
          </a>
        </h2>
        <p>{{ article.summary }}</p>
      </article>
    {% endfor %}
  </main>
{% endblock %}
5启用命名空间插件
python
# 安装插件后,Pelican 默认会自动发现命名空间插件:
# python -m pip install pelican-sitemap

# 如果需要显式控制插件和执行顺序:
PLUGINS = [
    "pelican.plugins.sitemap",
]

SITEMAP = {
    "format": "xml",
    "priorities": {"articles": 0.7, "pages": 0.5},
}
6生成并预览网站
bash
pelican content -s pelicanconf.py
pelican --listen

# 浏览器访问 http://localhost:8000
# 正式发布时加载生产配置:
pelican content -s publishconf.py

下一步:将开发设置保留在 pelicanconf.py,把正式域名、Feed 和删除输出目录等生产选项放入 publishconf.py;CI 中固定 Python 与依赖版本,并先构建到临时目录验证链接和永久地址。

ALTERNATIVES

类似项目

这些工具同样将文本内容与主题模板生成静态网站,但 Pelican 更贴近 Python、Jinja 和 reStructuredText 生态。

COMPARISON

Pelican vs Hexo

Pelican 与 Hexo 都围绕文章、页面、主题、分类和插件构建静态博客;Pelican 使用 Python 与 Jinja,并原生支持 reStructuredText,Hexo 使用 Node.js 并拥有数量更大的博客主题和 JavaScript 插件生态。

比较维度PelicanHexo
核心实现Python,通过虚拟环境与 pip 管理JavaScript,通过 Node.js 与 npm 管理
内容格式Markdown、reStructuredText 和 HTML以 Markdown 为主,可通过 Renderer 扩展
模板系统Jinja 主题、继承、Macro 和 FilterNunjucks、EJS、Pug 等可插拔 Renderer
内容模型Article、Page、Author、Category、Tag 和 TranslationPost、Page、Draft、Category、Tag 和 Scaffold
扩展方式Python 命名空间插件、Signal、Reader 和 Generatornpm 插件、scripts 和 Extend API
主题生态规模较小,适合自行编写 Jinja 主题博客主题数量丰富,中文社区资源较多
发布工具Python 配置、Make/Invoke 或自定义脚本CLI 与 Deployer 插件提供一体化命令
更适合Python 团队、reST 内容和定制出版管线JavaScript 用户、个人博客和主题快速搭建
如何选择

如果团队熟悉 Python、需要 reStructuredText 或希望用 Jinja 和 Signal 构建专用内容管线,Pelican 更自然;如果目标是快速选择成熟博客主题、复用中文社区方案,或主要使用 JavaScript 与 npm,Hexo 更省力。选择 Pelican 时还应评估 AGPL-3.0 义务,并用真实主题验证插件兼容性和前端资源流程。

VERIFICATION

资料核验

版本、维护信息与本页采用的官方资料来源。

最后核验2026 年 7 月 26 日
核验版本官方当前稳定版与文档主线
内容维护Docs100 编辑整理
项目维护状态活跃维护

本次核验覆盖 Pelican 的核心定位、主要能力、官方入口与开源许可。项目版本持续更新,具体补丁版本、兼容性和迁移要求请在采用前继续核对官方发布记录。

维护状态核验2026 年 7 月 26 日 · 最近可见代码活动:2026 年 4 月 20 日

官方仓库未归档,核验时最近可见的代码活动日期为 2026 年 4 月 20 日。该状态表示项目近期仍有公开维护活动,不代表固定发布频率或长期支持承诺。

查看官方仓库