写在前面: 面对全面放开后多样的消费机会,开发者们如何在保障品质生活的同时,借助开源工具,全面、科学地规划和管理个人财务,把握资金动向,避开消费陷阱?
LigaAI 特邀我司 Nerd4me 大佬分享其个人财务管理经验,系列共分「概念篇」和「实战篇」。本篇「实战篇」,将展开介绍开发者如何使用 Beancount 系统且便捷地记账。
Beancount 是一个基于纯文本的开源记账软件,提供了一系列开箱即用的命令行工具,以及一套简洁、实用且美观的 Web UI。
其核心记账逻辑是「复式记账法」,即每一笔交易至少关联两个交易账户,一借一贷,数额相等。特别的是, 复式记账法规定「收入为负,支出为正」 —— 在《「钞能力养成指北」前传》中,我们也详细解释了这点,大家可以按需补课。
👉新手指南:Why Beancount?
市面上有非常多成熟、知名的记账工具,为什么我仍强烈推荐使用 Beancount?出于以下几点考虑:
Beancount 采用改良版的复式记账方案,「正负」代替「借贷」 对非会计专业的朋友更友好;
可直接在本地运行。相比基于云端的工具,数据安全更有保障,无需担心个人账务泄漏;
纯文本文件管理账目,便于记录和存储。 基于 Beancount 语法生成的文件,很容易阅读;
提供完整的命令行工具集和可视化工具
Fava
(内含大量财报模板),支持基于类 SQL 查询,可轻松生成各种复杂的报表数据;账本既是用户的输入文件,也是软件的「数据库」,可实现数据和工具的「无痛搬家」。
Beancount 是 Ledger-Like 家族的杰出成员。对比背靠 C++
的 Ledger,基于 Python
的 Beancount 应用轻便,新增插件或二次开发更简单;多货币支持等丰富而强大的功能,能够很好地覆盖各种记账、查账场景。
事实上,Beancount 并不知道什么是「货币」。它只是记录了「通货 Commodity」的变化,而通货完全由用户定义。 因此,Beancount 可以记录含货币在内任何东西的变化,如年假天数、股票、航空里程、信用卡积分……
当然,也可以用来数豆子——这也是「Beancount」名字的由来 >A<
👉 英勇黄铜:基本环境搭建
迈出「Beancount 记账」的第一步,需要安装 Python3
环境和对应包。
pip install beancount fava
使用下列命令,生成一个官方提供的示例。
bean-example > example.beancount
通过 fava
命令运行 Web UI 。默认情况下的 Web UI 会运行在 http://localhost:5000
中。
fava -H 0.0.0.0 example.beancount
👉 不屈白银:Beancount 语法入门
环境搭建后,我们需要制作账本来承载账目信息。Beancount 作者在 Beancount User’s Manual 中提供了非常详尽的使用说明,大家可以根据实际需求自行创建。
下面以《「钞能力养成指北」前传》中「老王煎饼摊」为例,逐步演示如何使用 Beancount 编写账本并制成报表。