I didn't find a real answer to the problem, but I found out that if you don't need to convert the Python file object to a FILE* (i.e., you don't need to "share" the opened file), you can just use ctypes to call fopen from libc and get the FILE* like that.