我运行这样的程序:
g++ begueradj.cpp -o begueradj`pkg-config --cflags --libs opencv`
我想从 Python 文件运行上述命令行测试.py:
import subprocess
subprocess.call(["g++", "begueradj.cpp", "-o", "begueradj","`pkg-config --cflags --libs opencv`"])
但是,我收到此错误:
g++:error: `pkg-config --cflags --libs opencv` No such file or directory
如何解决这个问题?
附言
请注意,该命令在终端上运行良好。
答案1
Python 无法执行 shell 的作业并执行命令替换。您必须自己执行命令替换,或者使用sh -c
或包装整个操作bash -c
:
例如,使用subprocess.check_output()
获取pkgconfig
命令的输出:
import subprocess
pkg_config_flags = subprocess.check_output(['pkg-config', '--cflags', '--libs', 'opencv'], universal_newlines=True).strip().split()
subprocess.call(["g++", "begueradj.cpp", "-o", "begueradj"] + pkg_config_flags])
或者使用sh -c
:
import subprocess
subprocess.call(["sh", "-c", "g++ begueradj.cpp -o begueradj `pkg-config --cflags --libs opencv`"])
如果你使用shell=True
:
subprocess.call("g++ begueradj.cpp -o begueradj `pkg-config --cflags --libs opencv`", shell=True)