复式借贷记账法 Beancount (2) - 环境设置

本文介绍一些 Opinionated Beancount 环境设置

快速开始

首先使用Python的虚拟环境(可选)

1
python3 -m venv ./venv

激活虚拟环境

1
source venv/bin/activate

安装对应的Python包

1
pip3 install beancount fava

生成一个模版账本

1
bean-example > example.beancount

运行Web UI

1
fava example.beancount

账本库

账本存放在哪里.

本地Git仓库

首先,因为版本控制的需求,建议把账本存放在一个本地的Git仓库。 不建议设置upstream/remote把其上传到Github等云端。毕竟账本的数据都是比较隐私的消费记录。

云储存

可以选择加密之后备份到云盘。

Mac上我推荐MacPaw的Encrypto, 好像也有Windows版本了

encrypto

部署

Native 部署

MacOS Launchd

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Disabled</key>
<false/>
<key>KeepAlive</key>
<true/>
<key>EnvironmentVariables</key>
<dict>
<key>FAVA_HOST</key>
<string>0.0.0.0</string>
<key>BEANCOUNT_FILE</key>
<string>/path/to/your/main/beancount/files.beancount</string>
</dict>
<key>Label</key>
<string>local.beancount.fava</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/bin/fava</string>
</array>
<key>WorkingDirectory</key>
<string>/path/to/your/directory</string>
</dict>
</plist>

如果你用的venv 那么请记得添加环境变量

1
2
3
4
5
6
7
8
9
10
11
<key>EnvironmentVariables</key>
<dict>
<key>FAVA_HOST</key>
<string>0.0.0.0</string>
<key>BEANCOUNT_FILE</key>
<string>/path/to/your/main/beancount/files.beancount</string>
<key>PATH</key>
<string>/your/python/venv/site-packages/</string>
<key>PYTHONPATH</key>
<string>/your/python/ven/site-package/</string>
</dict>

更多 Launchd 的使用方法 请阅读我另外一篇介绍 Launchd,如何在Mac上运行服务

Linux

Linux 请参考 systemd

Container 部署

1
https://hub.docker.com/u/fava
1
2
3
docker run --detach --name="beancount" --publish 5000:5000 \
--volume $(pwd)/example.beancount:/input.beancount \
--env BEANCOUNT_FILE=/input.beancount fava

这里如果熟悉docker命令的话就很直观了,我还是简要介绍一下各个参数的意思

参数 简介
detach docker 在后台跑这个进程,可以用attach将其带回前台
name 命名的容器
publish 开放端口的映射
volumn 将beancount文件用volumn挂载
env 通过环境遍历的方式告诉fava哪里去找beancount文件
env 通过环境遍历的方式告诉fava哪里去找beancount文件

更多信息,请参考

编辑器插件

Vim

Vim的插件 可以进行高亮,锁进以及错误检查。只许是用你最喜欢的插件管理器(我一般使用Vundle)加入这个插件即可。

Emacs

1
https://github.com/beancount/beancount/blob/master/editors/emacs/beancount.el

我用的是 spacemacs 只需要配置 user-config 指向 beancount repo中的emacs插件即可

1
2
3
(add-to-list 'load-path "~/code/beancount/editors/emacs/")
(require 'beancount)
(add-to-list 'auto-mode-alist '("\\.beancount\\'" . beancount-mode))

VSCode

VSCode 用的最多。VSCode beancount插件功能很不错,对齐,高亮,都不错。
自动补全唯一遗憾的就是好像目前还不能通过include去发现已有的账户去补全。

1
https://marketplace.visualstudio.com/items?itemName=Lencerf.beancount

系列介绍

准备用一个系列的文章来介绍这个工具和一些技巧。
这些技巧有一些是我从已有的模版中找出来,也有一些是在Google Group里看到大家的推荐,自己又尝试出来的方法。

  1. 先导 复式借贷记账法 Beancount (0) - 先导
  2. 基础知识 复式借贷记账法 Beancount (1) - 基础知识
  3. 环境设置 复式借贷记账法 Beancount (2) - 环境设置
  4. 如何对房产建模 复式借贷记账法 Beancount (3) - 房产
  5. 如何对RSU建模 复式借贷记账法 Beancount (4) - RSU
  6. 如何对ESPP建模
  7. 自动化导入
  8. 安全

希望快速得到新文章的通知?请关注作者的微信公众号

wechat-qrcode