Mám v Pythone modul rozšíreniavyžaduje GTK. Kompilácia programu GTK vo všeobecnosti vyžaduje spojenie TON, pretože GTK závisí od mnohých iných knižníc (Glib, Cairo, Pango atď.). Takže, zvyčajne som len kompilovať pomocou výstupu pkg-config
pomocou rozšírenia škrupiny (back-ticks), ako napríklad:
gcc -p-O2 -Wall myprogram.c -o myprogram `pkg-config --cflags gtk+-3.0` `pkg-config --cflag `pkg-config --libs gtk+-3.0`
Ale z nejakého dôvodu, keď používam rozšírenie shellu v odovzdanom argumentu module.extra_compile_args
in distutils, mám chybu, pretože BASH skutočne nerozširuje výraz:
module = Extension("mymodule",
sources = ["mymodule.c"])
module.extra_compile_args = ["`pkg-config --cflags gtk+-3.0`",
"`pkg-config --libs gtk+-3.0`"];
To má za následok chyby, ako napríklad:
gcc: error: `pkg-config --cflags gtk+-3.0`: No such file or directory
Takže existuje nejaký spôsob, ako túto prácu urobiť? Potrebujem robiť rozšírenie shellu ručne tým, že získam výstup z pkg-config
ako reťazec Python a potom ho pridáme ako prvok module.extra_compile_args
?
odpovede:
2 pre odpoveď č. 1module.extra_compile_args = [
subprocess.check_output(["pkg-config", "--cflags", "gtk+-3.0"]),
subprocess.check_output(["pkg-config", "--libs", "gtk+-3.0"])
];
http://docs.python.org/library/subprocess.html#subprocess.check_output