which() 命令只能通过 ./ 找到可执行文件

which() command can find executable only with ./

我正在使用 pymatgen,它有一个 class BaderAnalysis (https://github.com/materialsproject/pymatgen/blob/v2020.4.29/pymatgen/command_line/bader_caller.py)。 class 需要一个名为 bader 的可执行文件(来自其他来源的二进制文件),因此它使用 which() 检查文件是否存在。 我确实有文件,我可以手动 运行 bader 程序,但我总是得到文件不存在的错误。 如果我手动尝试 which() 命令,结果发现它只找到前缀为 ./

的它
print(which('bader'))
print(which('./bader'))

输出: None

./bader

如何使which命令在没有前缀的情况下找到它? (因为pymatgen class 字面意思 运行s if not which("bader") or which("bader.exe"): 'error message...' 在初始化的时候 class.

您需要将当前目录添加到 PATH 环境变量中。您可以在程序调用中执行此操作。例如,

PATH=$PATH:$PWD python my_script.py