/ Distutils a shell rozšírenie - python, bash, distutils

Distutils a shell rozšírenie - python, bash, distutils

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ď č. 1
module.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