我正在尝试在 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
.