Мои проекты на Python зависят от программы на C ++. Я хочу создать пакет Python, который компилирует и устанавливает эту программу в виртуальную среду. Программа должна появиться в текущем PATH.
Я пытался зарегистрировать исходные файлы, используя ext_modules
вариант, но он создает модуль .so. Не совсем то, что мне нужно.
Есть ли способ добиться этого?
Вы можете запускать команды оболочки в python, этого должно быть достаточно для компиляции кода.
import os
os.system ("make -C /path/to/makefile")
Вы также можете запустить результирующий объектный файл как подпроцесс;
import subprocess
theCProcess = subprocess.Popen('/path/to/object/file')
или же
theCProcess = subprocess.Popen(['/path/to/object/file', 'some', 'extra', 'arguments'])
И что вы подразумеваете под PATH? Вы имеете в виду переменную bash PATH? Обычно это должно оставаться постоянным, как /usr/local/bin:/usr/bin:/bin
Вы можете поместить свой двоичный файл в эти каталоги, но только если вы хотите, чтобы он был доступен для всей системы.