首页 > 解决方案 > 使用 python 运行 bash_profile 命令

问题描述

在我的 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 命令。感谢您的任何帮助。

标签: pythonbashsubprocess

解决方案


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

这是必要的代码更改:

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

请注意,值得阅读python 文档中给出的使用它的安全注意事项。


推荐阅读