为什么我不能使用该程序的完整路径来调用该程序?

为什么我不能使用该程序的完整路径来调用该程序?

我正在尝试在 Python 3 中为一个名为的现有命令行工具构建一个命令行包装器spooky,但我很难理解一些奇怪的行为。如果我在命令行中输入 spooky,它会显示 spooky 的手册页。如果我/path/to/spooky在命令行上输入 spooky 工具 ( ) 的路径,它还会显示 spooky 的手册页。

如果我将 spooky 放在路径中,然后输入所需的参数,则可以成功运行 spooky 程序:

$ spooky -a 50 -b .97

但是,如果我不在路径中放置 spooky 并输入以下命令,它将不会运行。

$ /path/to/spooky -a 50 -b .97

为什么当我输入程序路径和所需参数时,该程序无法运行?

答案1

在你的问题中,“spooky”是指现有命令还是你自己编写的 python 3 包装器?

另外,您说如果您在命令行上输入 spooky ,它会显示手册页。那是对的吗?只是“spooky”本身——而不是“man spooky”——调用了手册页?

添加:

根据您所说的,“spooky”命令似乎正在检查它自己的参数 - 包括它被调用的名称 - 并抱怨该名称是否不是“spooky”,这在您运行时发生它带有完整路径名。

一种简单的解决方案是从包装器中以“幽灵”方式运行命令,并确保它位于路径中。

答案2

任何错误消息都会非常有帮助,而不是“它不运行”。

但是,尝试添加

  #!/usb/bin/python 

(或 #!/usb/bin/python3.2 或您的系统使用的任何 Python 解释器)作为 Python 脚本的第一行。

另外,使用 unix chmod 命令将文件标记为可执行文件

 chmod u+x /path/to/spooky 

答案3

听起来“spooky”在解析它的参数方面做得很差(为什么以及如何取决于 spooky 是用什么语言编写的)。

一个简单的解决方法是在使用os.chdir.

相关内容