Я запускаю такую программу:
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
Обратите внимание, что команда отлично работает на терминале.
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)