python c extensions are modules written in C/C++ and can be imported and used by python interpreter
Questions tagged [python-c-extension]
257 questions
40
votes
4 answers
How to make a copy of a python module at runtime?
I need to make a copy of a socket module to be able to use it and to have one more socket module monkey-patched and use it differently.
Is this possible?
I mean to really copy a module, namely to get the same result at runtime as if I've copied…

Dmitry Trofimov
- 7,371
- 1
- 30
- 34
35
votes
4 answers
Building lxml for Python 2.7 on Windows
I am trying to build lxml for Python 2.7 on Windows 64 bit machine. I couldn't find lxml egg for Python 2.7 version. So I am compiling it from sources. I am following instructions on this site
http://lxml.de/build.html
under static linking section.…

Kamal
- 3,068
- 5
- 26
- 26
32
votes
2 answers
Cython package with __init__.pyx: Possible?
Is it possible to create a Python 2.7 package using __init__.pyx (compiled to __init__.so)? If so how? I haven't had any luck getting it to work.
Here is what I have tried:
setup.py:
#!/usr/bin/env python
from distutils.core import setup
from…

Richard Hansen
- 51,690
- 20
- 90
- 97
30
votes
4 answers
Python C extension: Use extension PYD or DLL?
I have a Python extension written in C and I wonder if I should use the file extension DLL or PYD under Windows. (And what would I use in Linux?)
Are there any differences (besides the filename)?
I found an unofficial article. Is this the secret of…

gecco
- 17,969
- 11
- 51
- 68
30
votes
7 answers
PyEval_InitThreads in Python 3: How/when to call it? (the saga continues ad nauseam)
Basically there seems to be massive confusion/ambiguity over when exactly PyEval_InitThreads() is supposed to be called, and what accompanying API calls are needed. The official Python documentation is unfortunately very ambiguous. There are…

Channel72
- 24,139
- 32
- 108
- 180
29
votes
3 answers
Python and OpenMP C Extensions
I have a C extension in which I'd like to use OpenMP. When I import my module, though, I get an import error:
ImportError: /home/.../_entropysplit.so: undefined symbol: GOMP_parallel_end
I've compiled the module with -fopenmp and -lgomp. Is this…

ajduff574
- 2,101
- 1
- 21
- 20
27
votes
3 answers
What is the "correct" way to pass a boolean to a Python C extension?
This is a simple example from the python documentation (http://docs.python.org/extending/extending.html):
static PyObject *
spam_system(PyObject *self, PyObject *args)
{
const char *command;
int sts;
if (!PyArg_ParseTuple(args, "s",…

shygon
- 273
- 1
- 3
- 6
23
votes
2 answers
How does PyArg_ParseTupleAndKeywords work?
I've been trying to learn how to write C-extensions for Python and want to be sure I understand how PyArg_ParseTupleAndKeywords works.
I believe that the first argument is a PyObject pointer that points to an array of the arguments being passed…

user1245262
- 6,968
- 8
- 50
- 77
22
votes
1 answer
Docstrings in C extensions to Python?
When creating a C extension to Python, is it possible to be able to somehow write comments that are exposed as docstrings to users of the extension?

Tim McNamara
- 18,019
- 4
- 52
- 83
22
votes
5 answers
In Python how can one tell if a module comes from a C extension?
What is the correct or most robust way to tell from Python if an imported module comes from a C extension as opposed to a pure Python module? This is useful, for example, if a Python package has a module with both a pure Python implementation and a…

cjerdonek
- 5,814
- 2
- 32
- 26
20
votes
2 answers
Extending python with C: Pass a list to PyArg_ParseTuple
I have been trying to get to grips with extending python with C, and so far, based on the documentation, I have had reasonable success in writing small C functions and extending it with Python.
However, I am now struck on a rather simple problem -…

JohnJ
- 6,736
- 13
- 49
- 82
20
votes
7 answers
Is it normal that running python under valgrind shows many errors with memory?
I've tried to debug memory crash in my Python C extension and tried to run script under valgrind. I found there is too much "noise" in the valgrind output, even if I've ran simple command as:
valgrind python -c ""
Valgrind output full of repeated…

bialix
- 20,053
- 8
- 46
- 63
19
votes
5 answers
Embedding Python in C, linking fails with undefined reference to `Py_Initialize'
I am trying to compile the example from the docs https://docs.python.org/2.7/extending/embedding.html and my code looks exactly like the one under 5.1:
#include
int
main(int argc, char *argv[])
{
Py_SetProgramName(argv[0]);
…

Miguellissimo
- 473
- 2
- 4
- 11
19
votes
1 answer
Difference between PyMODINIT_FUNC and PyModule_Create
If I'm understanding correctly,
PyMODINIT_FUNC in Python 2.X has been replaced by PyModule_Create in Python3.X
Both return PyObject*, however, in Python 3.X, the module's initialization function MUST return the PyObject* to the module -…

user1245262
- 6,968
- 8
- 50
- 77
15
votes
2 answers
What is the easiest way to make an optional C extension for a python package?
I've created a C extension that I'd like to enable in my Python package (using setuptools) only if a command line option is passed in. What is the easiest way to do this?
I can't seem to find any straightforward ways of going about this.

Jason Baker
- 192,085
- 135
- 376
- 510