为什么"which"系统命令在python中给出了一个256代码,其中os.system?

Why does the "which" system command give a 256 code with os.system in python?

我在 mac OSX.

我有一个程序试图从终端调用下载的库。如果我不知道图书馆在哪里,这是不可能的。我将使用 pip 作为通用库示例

>>> os.system("pip -h")
32512
>>> os.system("which pip")
256

我已经阅读了 this 对 256 错误的回复,但是,我仍然不明白为什么它会出现在这里。它说它“经常用于指示参数解析失败”但是确切的命令有效,因为这对我来说似乎不是参数解析错误。

我希望能够做一些达到以下效果的事情:

os.system(os.system("which pip") +" -h")

如果还有其他方法,我很想听听

不要那样使用 os.system(也不要使用 which)。试试这个来找到一个程序:

import os

for bin_dir in os.environ.get("PATH").split(":"):
  if 'my_program' in os.listdir(bin_dir):
    executable_path = os.path.join(bin_dir, 'my_program')
    break

请注意,这确实假设 PATH 已由启动脚本的任何进程正确设置。如果您 运行 从 shell 中安装它,那应该不是问题。

一般来说,使用 os.system 调用常见的 *NIX 实用程序并尝试解析结果是单一的——它正在编写 python 就好像它是一个 shell 脚本一样。

然后,不要使用 system 到 运行 pip,而是使用 this answer.

中描述的解决方案