g ++: ошибка: `pkg-config --cflags --libs opencv`: нет такого файла или каталога

Я запускаю такую ​​программу:

g++ begueradj.cpp -o begueradj`pkg-config --cflags --libs opencv`

Я хочу запустить приведенную выше командную строку из файла Python test.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 

Как решить эту проблему?

PS

Обратите внимание, что команда отлично работает на терминале.

1
задан 10 April 2015 в 02:11

1 ответ

Python не может выполнить задание оболочки и действительно управляет заменой. Необходимо было бы выполнить замену команды сами или перенести все это с помощью 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)
1
ответ дан 10 April 2015 в 02:11

Другие вопросы по тегам:

Похожие вопросы: