使用python运行bash_profile命令

时间:2019-01-17 11:23:14

标签: python bash subprocess

在bash终端中,我可以运行以下命令:

$SCHRODINGER/run volume_calc.py -imae type.mae

这正常工作。

然后我试图在python脚本中运行相同的命令;我尝试过以下方法:

import subprocess
subprocess.run(['$SCHRODINGER/run', 'volume_calc.py', '-imae', 'type.mae'])

引发错误:

FileNotFoundError: [Errno 2] No such file or directory: '$SCHRODINGER/run'

我很困惑这个问题所在,因为我可以很好地运行基本的bash命令。谢谢您的帮助。

1 个答案:

答案 0 :(得分:0)

默认情况下,除非您将shell参数传递给subprocess.run调用,否则不会使用子进程完成环境变量的扩展。这样会将您的参数传递给外壳程序(例如bash),该外壳程序将处理所需的扩展以及任何其他类似外壳程序的功能。

这里是必要的代码更改:

subprocess.run(['$SCHRODINGER/run', 'volume_calc.py', '-imae', 'type.mae'], shell=True)

请注意,使用security considerations值得使用python文档中提供的功能。