首页 > TAG信息列表 > python-c-extension

如何获取distutils用于构建的arch字符串?

当我使用python setup.py build构建c扩展名时,将在名为目录的目录下创建结果 build/lib.linux-x86_64-2.6/ lib之后的部分.根据操作系统,CPU和Python版本进行更改. 有没有办法可以从python访问适合当前体系结构的字符串?希望以确保与distutils正在创建的内容匹配的方式.解决方法:

Python C-API模块退出处理程序-是否等同于atexit?

我正在使用Python ver 2.6.4 当我的扩展模块退出/卸载时,我必须从C库中调用一个函数.对于C扩展模块,相当于atexit?解决方法:Py_AtExit()功能可用于注册多达32个清除功能.

python-如何在派热克斯中定义初始化的C数组?

我想在派热克斯中定义初始化的C数组,例如等价于: unsigned char a[8] = {0,1,2,3,4,5,6,7}; Pyrex中的等效物是什么? 只是数组是 cdef unsigned char a[8] 但是如何用我的值初始化它呢?解决方法:在Pyrex的继任者Cython中,此功能在一年多的时间里得到了修复,以修复此feature reques

编译器找不到Python.h

我对C有点陌生,我似乎无法做我想要的事情.我需要为C函数建立一些Python绑定,我想我可以弄清楚这一点.但是只有一点点线是行不通的. #include <Python.h> 我得到这个: fatal error #1035: Can't find include file <Python.h>. 我已经尝试了一切.我只是将Python.h与我的项目放在

在Python 3.5中使用PyEval_EvalCode

我正在尝试将扩展模块从2.7移植到3.5.扩展模块使用PyEval_EvalCode.它使用类似于以下代码的代码来做到这一点: struct _node *compiled_node = PyParser_SimpleParseString (in_string, Py_file_input); if (compiled_node) { PyCodeObject *compiled_code = PyNode_Compile (c

具有可变数量参数的Python扩展模块

我试图找出在C扩展模块中如何为函数提供一个变量(也许是)相当多的参数. 阅读约PyArg_ParseTuple,似乎你必须知道有多少人接受,一些是强制的,一些是可选的,但都有自己的变量.我希望PyArg_UnpackTuple能够处理这个问题,但是当我尝试以错误的方式使用它时,它似乎只是给我总线错误. 作

Python 3中的PyEval_InitThreads:如何/何时调用它? (传奇继续令人作呕)

基本上,当应该调用PyEval_InitThreads()时,似乎存在大量的混淆/模糊,并且需要伴随API调用的内容.不幸的是,official Python documentation很暧昧.关于这个话题已经有many questions on stackoverflow了,事实上,我个人已经已经asked a question almost identical了,所以如果将其作为

Python扩展在操作大型列表时会创建无效指针

我设法为python列表实现了Fisher-Yates shuffle函数,作为习惯于扩展python的练习.它适用于相对较小的列表,除非我多次运行该函数. 每当列表大小超过100时,我就会遇到各种内存问题: >>>import evosutil >>> a=[i for i in range(100)] >>> evosutil.shuffle(a) >>> a [52, 66, 0, 58

将C结构传递给Python函数

我需要一种简单的方法将C结构传递给Python函数.我已经将Python嵌入到游戏服务器中,我打算用Python编写游戏逻辑.我已经搜索过谷歌和邮件列表,没有发现任何有用的东西.我在C中有一个复杂的结构(指向其他相对复杂的结构)并且没有找到合理的方法. 我有这个结构: struct client { i

Python C扩展不是线程安全的吗?

我用python脚本做了一个c扩展,这个脚本是相当费力的.代码本身经过了很好的测试和简单.使用一些大型列表调用c扩展,然后执行一些聪明的算法并返回一些新列表. c扩展是100%自给自足,它不使用任何其他c函数,也不使用任何python对象的方法(它确实使用这些标准的Python方法:PyFloat_AsDoub

在python中导入时重定向C函数的stdout问题

我写了一个简单的C模块,使用printf打印到stdout. // sample.c func_print() { printf("Hello World!\n"); } 后来,我使用SWIG创建了一个包装器,这样我就可以在我的python程序中使用func_print了.在这个程序中,我已将stdout重定向到textctrl小部件.正如预期的那样,我使用print

Python / C:一次解析所有值以返回Python?

如果你在Python中输出很多从C到dict的值,那么有更好的(更快且更不容易出错)的方法吗: return Py_BuildValue("{s:d,s:d,s:d,s:d,s:d,s:d,s:d,s:d,s:d,s:d,s:d,s:d,s:d,s:d,s:d,s:d,s:d,s:d,s:d,s:d,s:d,s:d,s:d,s:d,s:d,s:d,s:d,s:d,s:d,s:d,s:d,s:d,s:d,s:d,s:d,s:d,s:d,s:d,s

Distutils找不到Python.h

我有一个带有扩展部分的distutils安装脚本,它看起来像这样: from distutils.core import setup, Extension my_module = Extension('my_module', sources = ['my_file.c', 'my_other_file.c']) setup (name = 'my_module', versi

从Python中返回包含和运行时lib目录

让我们说我想从命令行使用gcc来编译Python的C扩展.我将这样的调用结构如下: gcc -o applesauce.pyd -I C:/Python35/include -L C:/Python35/libs -l python35 applesauce.c 我注意到-I,-L和-l选项是绝对必要的,否则你会得到一个看起来像this的错误.这些命令告诉gcc在哪里寻找标题