[python-win32] Embedding python in a Win32 application

Zachary Ware zachary.ware+pydev at gmail.com
Fri Oct 3 20:02:16 CEST 2014


On Fri, Oct 3, 2014 at 12:07 PM, Zachary Turner <zturner at google.com> wrote:
> Hi,
>
> I'm trying to embed python 2.7 in a Win32 application and I'm running into a
> host of problems.
>
> Originally, my problem was that when compiling a debug version of my
> application and linking against the python27.lib that I installed via the
> packaged installer, I would just get strange behavior and memory corruption
> and random crashes.  I finally determined that this was basically just
> impossible, and if I want to use embedded python in a debug version of my
> application, I need to build my own debug version of python.
>
> This leads me to my first question: Was my original determination accurate?
> I think all of my problems would be solved automatically if I could just
> embed release python in a debug version of my application.

I believe you're correct.  It is a somewhat unfortunate limitation;
it's on my radar to see if it can be relaxed, but I haven't had time
to look into it very closely yet.

> Fast forward a bit.  I now have a custom debug build of python.  My debug
> build of application links against it, and release build links against
> release python.  So far so good, until I try to run "import ctypes".  Then I
> get this:
>
> Python Interactive Interpreter. To exit, type 'quit()', 'exit()' or Ctrl-D.
>>>> import ctypes
> Traceback (most recent call last):
>   File "<console>", line 1, in <module>
>   File "d:\python_src\Python-2.7.8\Lib\ctypes\__init__.py", line 10, in
> <module>
>     from _ctypes import Union, Structure, Array
> ImportError: No module named _ctypes
>
> Anybody have any idea what is going on here or how I might diagnose this?
> It's obviously located the ctypes module that came with the source
> distribution, so what error could it be running into?

What do you get if you do 'import sys; print sys.path'?  Is the
directory that holds _ctypes.pyd included in sys.path?

> For reference, the way I've built this is to download Python 2.7 source
> distribution, open up the solution in Visual Studio, and build it, then have
> my application link against the binaries that are put into the build's
> output directories.  Is there a different way?

That ought to be about right.

-- 
Zach


More information about the python-win32 mailing list