为什么"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.
中描述的解决方案
我在 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.