当前位置: 首页 > news >正文

使用 Beancount 记账

系统信息

$ cat/etc/os-release PRETTY_NAME="Ubuntu 22.04.1 LTS"NAME="Ubuntu"VERSION_ID="22.04"VERSION="22.04.1 LTS (Jammy Jellyfish)"VERSION_CODENAME=jammy ID=ubuntu ID_LIKE=debian HOME_URL="https://www.ubuntu.com/"SUPPORT_URL="https://help.ubuntu.com/"BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"UBUNTU_CODENAME=jammy

安装及简单使用

  • 如何安装
// 目标工具sudo-H python3-m pip install beancount
辅助工具 fava// 帮助显示sudo-H python3-m pip install fava// 转换 (微信/支付宝/京东/银行) csv 文件 为 Beancount/Ledger 文件double-entry-generator 从github下载 https://github.com/deb-sig/double-entry-generatorhttps://github.com/deb-sig/double-entry-generator.git
  • 如何使用
1.生成 一个名为 example.beancount 的 账本 bean-example>example.beancount2.以账本信息搭建web服务器 fava example.bean// nohup /usr/bin/python3 /usr/local/bin/fava -H 192.168.XXX.XXX index.beancount > /dev/null 2>&1 &3.查看 账本信息 在web浏览器中输入 http://localhost:5000

其他(待研究)

三个工具 beancount 包 bean-check bean-doctor bean-example bean-format treeify fava 包double-entry-generator 工具
  • 为什么
  • 借贷记账法
  • 结余与资产
  • 项目管理

特点

1.账本为文本格式 便于版本管理 数据不再受制于人3.无美化界面,需要外挂fava4.fava 采用bs架构,无 cs架构

参考文档

  • 记账神器 Beancount 教程
在 https://www.python.org/getit/ 下载最新的python3 安装包 安装(同时勾选设置PATH),安装后打开cmd,键入 pip install fava 此时,fava 和beancount 已经安装完毕

bat脚本

@echo off REM 切换到目标目录cd/d D:\test REM 配置 beancount 文件setBEAN_FILE=xxx.beancount REM1. 杀掉已有的 fava 相关进程 tasklist /FI"IMAGENAME eq fava.exe"|findstr /I"fava">nulif%errorlevel%==0(echo检测到已有 fava 进程, 尝试结束... taskkill /F /IM fava.exe>nul2>&1)REM2. 后台启动 fava(新开进程,不阻塞当前 CMD) start""fava %BEAN_FILE% REM3. 退出 CMDexit

对重复的支持

原生不支持 option"insert_pythonpath""True";这一句所在的文件不能被include plugin"plugins.beancount-repete.plugin";这里有路径,这一句所在的文件不能被include,所以得放到 最顶层 beancount 文件中 pip install recurrent git clone https://github.com/jpluscplusm/beancount-repete.git参考 https://github.com/jpluscplusm/beancount-repete 验证fava 可解析

详细log

$ sudo-H python3-m pip install beancount[sudo]passwordforpop:Collecting beancount Downloading beancount-3.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl(285kB)━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━285.7/285.7KB21.4kB/s eta0:00:00Requirement already satisfied:python-dateutil>=2.6.0in/usr/lib/python3/dist-packages(from beancount)(2.8.1)Requirement already satisfied:click>=7.0in/usr/lib/python3/dist-packages(from beancount)(8.0.3)Collecting regex>=2022.9.13Downloading regex-2024.7.24-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl(776kB)━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━776.5/776.5KB16.5kB/s eta0:00:00Installing collected packages:regex,beancount Successfully installed beancount-3.0.0regex-2024.7.24WARNING:Running pip as the'root'user can result in broken permissions and conflicting behaviour with the system package manager.It is recommended to use a virtual environment instead:https://pip.pypa.io/warnings/venv
pop@ou:~/tmp/tatarubook$ bean-check Usage:bean-check[OPTIONS]FILENAME Try'bean-check --help'forhelp.Error:Missing argument'FILENAME'.
$ pip3 show-f beancount Name:beancount Version:3.0.0Summary:Command-line Double-Entry Accounting Home-page:https://beancount.github.io/Author:Author-email:Martin Blais<blais@furius.ca>License:GPL-2.0-only Location:/usr/local/lib/python3.10/dist-packages Requires:click,python-dateutil,regex Required-by:Files:../../../bin/bean-check../../../bin/bean-doctor../../../bin/bean-example../../../bin/bean-format../../../bin/treeify beancount-3.0.0.dist-info/INSTALLER beancount-3.0.0.dist-info/METADATA beancount-3.0.0.dist-info/RECORD beancount-3.0.0.dist-info/REQUESTED beancount-3.0.0.dist-info/WHEEL beancount-3.0.0.dist-info/entry_points.txt beancount/VERSION beancount/__init__.py beancount/__pycache__/__init__.cpython-310.pyc beancount/__pycache__/api.cpython-310.pyc beancount/__pycache__/loader.cpython-310.pyc beancount/api.py beancount/core/__init__.py beancount/core/__pycache__/__init__.cpython-310.pyc beancount/core/__pycache__/account.cpython-310.pyc beancount/core/__pycache__/account_types.cpython-310.pyc beancount/core/__pycache__/amount.cpython-310.pyc beancount/core/__pycache__/compare.cpython-310.pyc beancount/core/__pycache__/convert.cpython-310.pyc beancount/core/__pycache__/data.cpython-310.pyc beancount/core/__pycache__/display_context.cpython-310.pyc beancount/core/__pycache__/distribution.cpython-310.pyc beancount/core/__pycache__/flags.cpython-310.pyc beancount/core/__pycache__/getters.cpython-310.pyc beancount/core/__pycache__/interpolate.cpython-310.pyc beancount/core/__pycache__/inventory.cpython-310.pyc beancount/core/__pycache__/number.cpython-310.pyc beancount/core/__pycache__/position.cpython-310.pyc beancount/core/__pycache__/prices.cpython-310.pyc beancount/core/__pycache__/realization.cpython-310.pyc beancount/core/account.py beancount/core/account_types.py beancount/core/amount.py beancount/core/compare.py beancount/core/convert.py beancount/core/data.py beancount/core/display_context.py beancount/core/distribution.py beancount/core/flags.py beancount/core/getters.py beancount/core/interpolate.py beancount/core/inventory.py beancount/core/number.py beancount/core/position.py beancount/core/prices.py beancount/core/realization.py beancount/loader.py beancount/ops/__init__.py beancount/ops/__pycache__/__init__.cpython-310.pyc beancount/ops/__pycache__/balance.cpython-310.pyc beancount/ops/__pycache__/basicops.cpython-310.pyc beancount/ops/__pycache__/compress.cpython-310.pyc beancount/ops/__pycache__/documents.cpython-310.pyc beancount/ops/__pycache__/find_prices.cpython-310.pyc beancount/ops/__pycache__/lifetimes.cpython-310.pyc beancount/ops/__pycache__/pad.cpython-310.pyc beancount/ops/__pycache__/summarize.cpython-310.pyc beancount/ops/__pycache__/validation.cpython-310.pyc beancount/ops/balance.py beancount/ops/basicops.py beancount/ops/compress.py beancount/ops/documents.py beancount/ops/find_prices.py beancount/ops/lifetimes.py beancount/ops/pad.py beancount/ops/summarize.py beancount/ops/validation.py beancount/parser/__init__.py beancount/parser/__pycache__/__init__.cpython-310.pyc beancount/parser/__pycache__/booking.cpython-310.pyc beancount/parser/__pycache__/booking_full.cpython-310.pyc beancount/parser/__pycache__/booking_method.cpython-310.pyc beancount/parser/__pycache__/cmptest.cpython-310.pyc beancount/parser/__pycache__/context.cpython-310.pyc beancount/parser/__pycache__/grammar.cpython-310.pyc beancount/parser/__pycache__/hashsrc.cpython-310.pyc beancount/parser/__pycache__/lexer.cpython-310.pyc beancount/parser/__pycache__/options.cpython-310.pyc beancount/parser/__pycache__/parser.cpython-310.pyc beancount/parser/__pycache__/printer.cpython-310.pyc beancount/parser/__pycache__/version.cpython-310.pyc beancount/parser/_parser.cpython-310-x86_64-linux-gnu.so beancount/parser/booking.py beancount/parser/booking_full.py beancount/parser/booking_method.py beancount/parser/cmptest.py beancount/parser/context.py beancount/parser/decimal.c beancount/parser/decimal.h beancount/parser/grammar.py beancount/parser/grammar.y beancount/parser/hashsrc.py beancount/parser/lexer.l beancount/parser/lexer.py beancount/parser/macros.h beancount/parser/options.py beancount/parser/parser.c beancount/parser/parser.h beancount/parser/parser.py beancount/parser/printer.py beancount/parser/tokens.h beancount/parser/version.py beancount/plugins/__init__.py beancount/plugins/__pycache__/__init__.cpython-310.pyc beancount/plugins/__pycache__/auto.cpython-310.pyc beancount/plugins/__pycache__/auto_accounts.cpython-310.pyc beancount/plugins/__pycache__/check_average_cost.cpython-310.pyc beancount/plugins/__pycache__/check_closing.cpython-310.pyc beancount/plugins/__pycache__/check_commodity.cpython-310.pyc beancount/plugins/__pycache__/check_drained.cpython-310.pyc beancount/plugins/__pycache__/close_tree.cpython-310.pyc beancount/plugins/__pycache__/coherent_cost.cpython-310.pyc beancount/plugins/__pycache__/commodity_attr.cpython-310.pyc beancount/plugins/__pycache__/currency_accounts.cpython-310.pyc beancount/plugins/__pycache__/implicit_prices.cpython-310.pyc beancount/plugins/__pycache__/leafonly.cpython-310.pyc beancount/plugins/__pycache__/noduplicates.cpython-310.pyc beancount/plugins/__pycache__/nounused.cpython-310.pyc beancount/plugins/__pycache__/onecommodity.cpython-310.pyc beancount/plugins/__pycache__/pedantic.cpython-310.pyc beancount/plugins/__pycache__/sellgains.cpython-310.pyc beancount/plugins/__pycache__/unique_prices.cpython-310.pyc beancount/plugins/auto.py beancount/plugins/auto_accounts.py beancount/plugins/check_average_cost.py beancount/plugins/check_closing.py beancount/plugins/check_commodity.py beancount/plugins/check_drained.py beancount/plugins/close_tree.py beancount/plugins/coherent_cost.py beancount/plugins/commodity_attr.py beancount/plugins/currency_accounts.py beancount/plugins/implicit_prices.py beancount/plugins/leafonly.py beancount/plugins/noduplicates.py beancount/plugins/nounused.py beancount/plugins/onecommodity.py beancount/plugins/pedantic.py beancount/plugins/sellgains.py beancount/plugins/unique_prices.py beancount/projects/__init__.py beancount/projects/__pycache__/__init__.cpython-310.pyc beancount/projects/__pycache__/export.cpython-310.pyc beancount/projects/export.py beancount/scripts/__init__.py beancount/scripts/__pycache__/__init__.cpython-310.pyc beancount/scripts/__pycache__/check.cpython-310.pyc beancount/scripts/__pycache__/deps.cpython-310.pyc beancount/scripts/__pycache__/directories.cpython-310.pyc beancount/scripts/__pycache__/doctor.cpython-310.pyc beancount/scripts/__pycache__/example.cpython-310.pyc beancount/scripts/__pycache__/format.cpython-310.pyc beancount/scripts/check.py beancount/scripts/deps.py beancount/scripts/directories.py beancount/scripts/doctor.py beancount/scripts/example.py beancount/scripts/format.py beancount/tools/__init__.py beancount/tools/__pycache__/__init__.cpython-310.pyc beancount/tools/__pycache__/treeify.cpython-310.pyc beancount/tools/treeify.py beancount/utils/__init__.py beancount/utils/__pycache__/__init__.cpython-310.pyc beancount/utils/__pycache__/bisect_key.cpython-310.pyc beancount/utils/__pycache__/date_utils.cpython-310.pyc beancount/utils/__pycache__/defdict.cpython-310.pyc beancount/utils/__pycache__/encryption.cpython-310.pyc beancount/utils/__pycache__/file_utils.cpython-310.pyc beancount/utils/__pycache__/import_utils.cpython-310.pyc beancount/utils/__pycache__/invariants.cpython-310.pyc beancount/utils/__pycache__/memo.cpython-310.pyc beancount/utils/__pycache__/misc_utils.cpython-310.pyc beancount/utils/__pycache__/pager.cpython-310.pyc beancount/utils/__pycache__/snoop.cpython-310.pyc beancount/utils/__pycache__/table.cpython-310.pyc beancount/utils/__pycache__/test_utils.cpython-310.pyc beancount/utils/bisect_key.py beancount/utils/date_utils.py beancount/utils/defdict.py beancount/utils/encryption.py beancount/utils/file_utils.py beancount/utils/import_utils.py beancount/utils/invariants.py beancount/utils/memo.py beancount/utils/misc_utils.py beancount/utils/pager.py beancount/utils/snoop.py beancount/utils/table.py beancount/utils/test_utils.py
http://www.cnnetsun.cn/news/2762776.html

相关文章:

  • 当 AI 学会打坐冥想,八卦阵法里的意识涌现真相
  • 从Pwn视角看动态链接:手把手教你一步步伪造ret2dlresolve攻击链(x86/x64实战)
  • Js代码转HTML,Js和Html互转在线工具
  • 从图形调试困境到精准定位:RenderDoc现代图形调试全流程解析
  • AI如何用高效信息破解NP完全性困境
  • 别再裸机轮询了!用STM32F407和RTX5实现多任务,代码清爽得像换了个人
  • 从LaTeX代码到完美排版:手把手教你调试IEEE模板中的作者信息区块(authorblock)
  • 别再只调包了!深入Spark MLlib ALS源码,搞懂电商推荐中的矩阵分解与冷启动难题
  • 手把手教你用Cloudflare为R2S软路由下的NAS设置DDNS,实现免费外网访问(含URL转发隐藏端口)
  • 别再死记硬背了!用‘上下文无关文法’和‘语法树’图解,5分钟搞懂高级语言语法核心
  • 新手避坑指南:用龙邱BCMV3扩展板给树莓派4B小车编程,从LED到电机驱动全流程
  • 避坑指南:路透社数据集多分类任务中,标签编码选categorical_crossentropy还是sparse_categorical_crossentropy?
  • 免费降重工具精选:AI智能改写高效降低重复率
  • 计算机专业学生必看:如何利用CCF和CORE排名,快速定位适合投稿的顶会(附最新列表)
  • MuleSoft企业级AI编排:LLM工业封装与生产落地实践
  • 从板框评估到叠层设计:一个四层PCB项目在AD中的完整避坑实操记录
  • 跨GPU超分辨率技术:如何让游戏帧率提升300%?
  • 别再纠结了!用Altium Designer设计电路时,RC和LC滤波器到底怎么选?(附实战对比)
  • KoAlpaca-llama-1-7b韩语对话模型:为什么选择它进行韩语NLP任务
  • OptiScaler:一键解锁所有显卡的AI超分超能力
  • 保姆级教程:在Docker版Nextcloud里离线安装Collabora在线文档(附端口映射与权限配置避坑点)
  • 零基础入门安卓开发:在快马平台获取你的第一个带注释的Android Studio项目
  • 提升wms开发效率:用快马ai自动生成库存预警等标准化功能模块代码
  • ROS机械臂仿真:别让‘arm_controller/follow_joint_trajectory’错误浪费你的时间,一份避坑指南
  • 三秒看图识可导:尖角、断点、垂直切线三大视觉判据
  • DBC文件避坑指南:从通讯协议到CANoe信号解析,这5个细节新手最易出错
  • 多维聚合数据操作:超越GROUP BY的语义治理与工程实践
  • PDF补丁丁:无需安装的PDF编辑神器,三步搞定所有PDF难题
  • 从ABAP内表到数据库:当`LINES(lt_table)`不等于`COUNT(*)`时,你该注意什么?
  • FLAN-T5-XXL 微调教程:如何用自定义数据训练模型