当前位置: 首页 > 面试题库 >

Python子进程调用返回“找不到命令”,终端正确执行

山越
2023-03-14
问题内容

我正在尝试从python运行gphoto2,但是没有成功。它只是返回找不到命令。gphoto已正确安装,如在终端中的命令正常工作。

p = subprocess.Popen(['gphoto2'], shell=True, stdout=subprocess.PIPE,
    stderr=subprocess.STDOUT, executable='/bin/bash')

for line in p.stdout.readlines():
    print line
p.wait()

/bin/bash: gphoto2: command not found

我知道osx Terminal(应用程序)有些有趣,但是我对osx的了解很少。

对这个有什么想法吗?

编辑

更改了我的一些代码,出现了其他错误

p = subprocess.Popen(['gphoto2'], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
for line in p.stdout:
    print line


    raise child_exception
OSError: [Errno 2] No such file or directory

编辑

使用完整路径’/ opt / local / bin / gphoto2’

但是如果有人愿意说明要使用哪个shell或如何登录并且能够具有相同的功能..?


问题答案:

使用时shell = True,的第一个参数subprocess.Popen应该是字符串,而不是列表:

p = subprocess.Popen('gphoto2', shell=True, ...)

但是,shell = True应尽可能避免使用,因为这可能会带来安全风险(请参阅警告)。

所以改用

p = subprocess.Popen(['gphoto2'], ...)

(当shell = Falseshell省略参数时,第一个参数应为列表。)



 类似资料:
  • M1 Mac系统终端< code>firebase模拟器:启动按预期工作。 但VSCode在同一命令上集成了终端错误(错误如下)。 我该如何解决这个问题? 如果重要的话,我同时使用Fish和Zsh,并且两者的行为是一致的:Fish和Zsh都在Mac终端应用程序中运行命令,但不是从VSCode的集成终端运行。 从VSCode集成终端运行时出错:

  • 问题内容: 如果我放命令 ssh user @ $ IP蚂蚁 然后我收到 bash:ant:找不到命令 但是当我登录 ssh用户@ $ IP 并把 Ant 然后工作正常。 Ant已安装在远程和本地计算机上。问题出在哪里? 我试图在Google中找到解决方案,但一无所获。 在此先感谢您的帮助! - 编辑 - 我需要调用一些bash脚本,不想将所有路径更改为完整路径。 问题答案: 通过ssh连接时,默

  • 关于通过Java向终端发送命令,我遇到了一个非常令人困惑的问题。我有这个密码: 第一个命令是这个"useradd user-p密码-d /home/ftp/test/-s /bin/false",第二个应该是这个回显用户名:new_password|chpasswd,第一个命令工作没有任何问题,并创建了我定义的用户"服务器"变量,但当我试图执行第二个命令来改变用户传递此命令可能永远不会发生,输出为

  • 问题内容: 我前一段时间读过这篇文章,但似乎找不到。我试图找到一个将在终端中执行命令然后输出结果的命令。 例如:脚本将是: 它将在终端中运行该命令的结果 问题答案: 做这件事有很多种方法: 一种简单的方法是使用os模块: 子流程模块可以实现更复杂的事情:例如:

  • 我知道有很多关于这个的线索,但是没有一个对我有用。以下是我试图做的: Javac并从我的java代码中运行一个文件。它适用于视窗系统,但我想让它也适用于UNIX。代码如下: 问题是,在UNIX系统上,它的行为“不可预测”,例如: 打开图像,但 它什么也没做。没有按摩。 我非常感谢您的任何意见。 更新--------------------------------------------------

  • 问题内容: 这里的目标是在新的shell中运行新的python文件,并在现有的shell中运行现有的python文件。说我有两个文件,aaa.py和bbb.py。为了简单起见,aaa.py所做的只是… …并且可以说bbb.py确实是… 现在的目标是在终端1中运行aaa.py,并使其在终端2中启动bbb.py。我希望存在类似下面的命令,但无法弄清楚。 问题答案: 通常,无法从shell进行此操作。您

  • 在我的Macbook上,使用bash shell的VSCODE中的集成终端在我打开它并在其中执行的每个命令上时都会抛出错误“bash:: echo: Command not find”。 但是我没有在我的iterm或终端上看到这个错误。他们都工作得很好。我只在VSCode集成终端中遇到此错误 这种情况以前没有发生过。我不知道最近发生了什么变化。 我检查了iterm和Terminal中是否也发生了同

  • 在我的项目目录中,我使用以下命令安装了Grunt: ...之后,我在我的项目目录中创建了Grunt服务器,但它给了我命令NotFound错误。 和: 我怎样才能修好它?