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

4 minute read

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

快速开始

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

1python3 -m venv ./venv

激活虚拟环境

1source venv/bin/activate

安装对应的Python包

1pip3 install beancount fava

生成一个模版账本

1bean-example > example.beancount

运行Web UI

1fava example.beancount

账本库

账本存放在哪里.

本地Git仓库

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

云储存

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

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

encrypto

部署

Native 部署

MacOS Launchd

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

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

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

更多 Launchd 的使用方法 请阅读我另外一篇介绍

Linux

Linux 请参考 systemd

Container 部署

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

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

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

更多信息,请参考

编辑器插件

Vim

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

Emacs

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

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

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

VSCode

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

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

系列介绍

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

  1. 先导
  2. 基础知识
  3. 环境设置
  4. 如何对房产建模
  5. 如何对RSU建模
  6. 如何对ESPP建模
  7. 自动化导入
  8. 安全

wechat-qrcode