首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Distutils和shell扩展

Distutils和shell扩展
EN

Stack Overflow用户
提问于 2012-08-09 03:24:23
回答 1查看 392关注 0票数 2

我在Python中有一个需要GTK的扩展模块。编译GTK程序通常需要大量的链接,因为GTK依赖于许多其他库(Glib、Cairo、Pango等)。因此,通常我只是使用pkg-config的输出通过外壳展开(反标记)进行编译,如下所示:

代码语言:javascript
复制
gcc -p-O2 -Wall myprogram.c -o myprogram `pkg-config --cflags gtk+-3.0` `pkg-config --cflag `pkg-config --libs gtk+-3.0`

但是由于某些原因,当我在传递给distutils中的module.extra_compile_args的参数中使用外壳展开时,我得到了一个错误,因为BASH实际上并没有展开表达式:

代码语言:javascript
复制
module = Extension('mymodule',
        sources = ['mymodule.c'])

module.extra_compile_args = ['`pkg-config --cflags gtk+-3.0`', 
        '`pkg-config --libs gtk+-3.0`'];

这只会导致如下错误:

代码语言:javascript
复制
gcc: error: `pkg-config --cflags gtk+-3.0`: No such file or directory

那么,有没有办法让这件事变得可行呢?我是否需要通过获取Python字符串形式的pkg-config输出,然后将其添加为module.extra_compile_args中的元素来手动进行外壳扩展

EN

回答 1

Stack Overflow用户

发布于 2012-08-09 03:55:22

代码语言:javascript
复制
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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11871713

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档