How to include Python Modules in a D Program?
Bill Baxter
dnewsgroup at billbaxter.com
Mon Sep 24 17:17:36 PDT 2007
Jon wrote:
> It sounds like either way is not that easy. -_-
No, it's not 'import my.python.modules.*' easy.
But it's also not all that complicated, just a little tedious.
> There wouldn't be a
> python to D convertor anywhere would there? Something like the .h to .d
> convertor?
No, and there probably never will be because the languages are just too
different.
> "Kirk McDonald" <kirklin.mcdonald at gmail.com> wrote in message
> news:fd9g3b$2sbh$1 at digitalmars.com...
>> Jon wrote:
>>> What would be higher level than this?
>>>
>>> I was hoping for something that would be easy to use and allow me to
>>> include all the python modules. Is there an example of some kind for
>>> python module you linked? I just import that in my D program and then
>>> link to all the modules?
>>>
>>> What would be the best course of action for this many modules? Maybe
>>> write a module in D that used that python module and all it does is
>>> wrap the python modules to cleaner code? I looked briefly at the PyD
>>> site, but they tend to have examples showing how to include D modules
>>> into Python. :( Did I miss something?
>>>
>>> Thanks for replying and taking an interest in helping me. :)
>>>
>>> Oh, by the way, I use GDC on Linux. It is the latest GDC version. I
>>> am also using Python v2.5.x
>>>
>>
>> Pyd is geared towards /extending/ Python with D code. It wraps much of
>> the raw Python/C API with a great deal of template trickery. It does
>> this pretty well, if I may say so.
>>
>> Pyd also comes with an extension to Python's distutils, which makes
>> building these extension modules relatively painless.
>>
>> You want to /embed/ Python in your D program. You can certainly do
>> this. The Python/C API has support for this. However, it is frequently
>> easier to extend rather than embed. This page covers many of the
>> arguments why:
>>
>> http://www.twistedmatrix.com/users/glyph/rant/extendit.html
>>
>> If you decide to go the embedding route, you'll basically end up using
>> the Python/C API directly for most things. You can still use Pyd,
>> though. It provides a number of very useful utilities for tying D to
>> Python (e.g. value conversion functions), even if you can't use its
>> high-level function and class wrapping interface. The PydObject class
>> in particular may be useful. (Though some careful attention will need
>> to be paid to how the D GC and the Python interpreter interact.)
>>
>> Even if you don't use Pyd, you will need the D bindings to the
>> Python/C API, the most complete version of which is part of the Pyd
>> project. Bill already linked to these. I will link to them again:
>>
>> http://dsource.org/projects/pyd/browser/trunk/infrastructure/python/python.d
>>
>>
>> Building such applications is not covered by Pyd. Usually, you just
>> need to pass in the right version flags and link against the Python
>> runtime.
>>
>> --
>> Kirk McDonald
>> http://kirkmcdonald.blogspot.com
>> Pyd: Connecting D and Python
>> http://pyd.dsource.org
>
More information about the Digitalmars-d-learn
mailing list