Statically linked extension and relative import

Andrew MacIntyre andymac at bullseye.apana.org.au
Thu May 7 07:34:22 EDT 2009


David Cournapeau wrote:
> Hi,
> 
> I am trying to build a 3rd party extension and link it statically to
> python. I managed to get things working by customizing Setup.local in
> python source tree, but I have a problem for imports of the 'foo.bar'
> form. For example, let's say the 3rd party module is laid out as
> follows:
> 
> foo/__init__.py
> foo/bar.so
> 
> and __init__.py contains:
> import foo.bar
> 
> I can build the bar extension and link it statically to python such as
> from python, "import bar" works. But how can I make it "recognize"
> "from foo import bar" ? I tried to understand how this works at the C
> level in import.c, but I am a bit lost in the code. The ultimate goal
> is to manage to get code coverage of the C code of the extension
> through gcov, which does not support coverage of shared libraries ATM.

If you link the bar extension statically, it is not in the foo package
namespace (which is why "import bar" works), so should be imported as bar
in foo's __init__.py.

from foo import bar

should then work from other code by virtue of the package namespace
(instantiated by __init__.py) then having a bar symbol.

-- 
-------------------------------------------------------------------------
Andrew I MacIntyre                     "These thoughts are mine alone..."
E-mail: andymac at bullseye.apana.org.au  (pref) | Snail: PO Box 370
        andymac at pcug.org.au             (alt) |        Belconnen ACT 2616
Web:    http://www.andymac.org/               |        Australia



More information about the Python-list mailing list