繁体   English   中英

Python无法使用sh或bash执行终端脚本

[英]Python can't execute terminal script, using sh nor bash [duplicate]

这个问题已经在这里有了答案:

我希望你们能帮助我解决这个问题,因为我真的被卡住了。。。我正在尝试从python执行程序,由于某种原因,它不起作用。 该脚本位于:

path/to/teqc

我已经将这一行添加到.bashrc文件中:

alias teqc='path/to/teqc'

而且,当我跑步时

teqc -tr d input >output

在终端上工作正常...但是,如果我在python程序上运行它,则显示:

sh: teqc: command not found

我一直在python上使用的代码是:

os.system('teqc -tr d input >output')

我尝试使用

subprocess.Popen('teqc -tr d input >output', shell=True, executable="/bin/bash")

但是唯一的结果是将错误消息更改为

/bin/bash: teqc: command not found

任何帮助将非常感激 :)

我忘了指定PD,操作系统是Fedora 21

我建议创建一个指向程序的符号链接。

ln -s /path/to/teqc /usr/bin/teqc

我认为问题在于,使用子流程在代码中运行命令时,环境变量PATH不相同。

  1. 一种解决方案是按照上一个答案中的建议进行软链接
  2. 您可以做的另一件事是,在使用子进程执行命令之前,先设置代码环境,然后os模块附带一个os.environ词典,该词典可用于使用类似以下内容的路径

     import os import subprocess os.environ['PATH'] += ":/path/to/teqc" subprocess.Popen(['teqc -tr d input'],stdout=subprocess.PIPE,stderr=subprocess.PIPE,shell=True) 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM