【发布时间】:2022-01-12 11:46:05
【问题描述】:
我正在使用安装了几个 python 钩子的 taskwarrior,这些钩子在发出某些 taskwarrior 命令时会被触发。当我从命令行正常使用 taskwarrior 时,这些钩子运行良好。
但是当挂钩由热键应用程序 Karabiner Elements(我在 Mac 上)触发时,我遇到了问题。 Karabiner 调用一个 perl 脚本,该脚本依次执行这个包含 task 命令的 bash 命令:
/bin/bash -c 'TASKRC=/Users/me/.taskrc /usr/local/bin/task add \'the task\''
不幸的是,Karabiner 日志中的堆栈错误已被截断。这是我得到的一样多:
[2021-12-07 06:24:51.797] [error] [console_user_server] shell_command stderr:Traceback (most recent call last): File "/Users/me/.task_work/hooks/on-add-pirate", line 9, in <module> from tasklib import TaskWarrior, Task File "/Users/me/Library/Python/3.8/lib/python/site-packages/tasklib/__init__.py", l...
我猜 python 脚本会窒息,因为它无法确定需要的库在哪里。但我没有看到任何我可以设置的 shell 环境变量。我用 brew 安装了 python3,用pip3 安装了tasklib 库(我相信)。
这是钩子脚本:
#!/usr/bin/env python3
import glob
from types import ModuleType
from importlib.machinery import SourceFileLoader, ModuleSpec
from importlib.util import module_from_spec
import os
from tasklib import TaskWarrior, Task
<-- snip -->
task = Task.from_input()
for hook in find_hooks('pirate_add'):
hook(task)
print(task.export_data())
这是错误中提到的__init__.py 脚本:
from .backends import TaskWarrior
from .task import Task
from .serializing import local_zone
__version__ = '2.2.1'
【问题讨论】:
标签: path shared-libraries