g++:error: `pkg-config --cflags --libs opencv`: 没有该文件或目录

g++:error: `pkg-config --cflags --libs opencv`: 没有该文件或目录

我运行这样的程序:

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)

相关内容