Robert Bradshaw wrote:

> Ah hah, that's where the error is getting introduced. You can't just move
compiled > files around, as their absolute (rather than relative) location
is needed and used > at compile time.

> There was a recent thread on whether or not the full module path is needed
at
> compile time. It would be nice if one was able to just do stuff like this,
but it
> seems the issue is more subtle. (I'll be happy to be proven wrong.)

Greg Ewing wrote:

> The cimport statement uses the Pyrex/Cython compiler's idea of the module
> namespace at compile time. If you move things around after that, it will
get
> confused.

This is indeed what I was trying to "get round" ;-)

Today our source code database structure does not care at all of the final
package structure. So the fact that PXD files need to be located withing the
same directory structure as the PYD/SO files clearly is an issue for us.

This could be seen like any C code that needs a dynamic library:
 - the source code includes a .h file that the compiler has to find possibly
through a -I option,
 - the linker has to find the static library (.a/.lib) possibly through
-L/-l options,
 - the application has to find the dynamic library (.so/.dll) possibly
through LD_LIBRARY_PATH/PATH environment variables.

Among these 3 steps (compiler/linker/execution), none requires that files
are located in the same directory (and they usually don't).

So I'm "pushing" to get this behaviour, considering that PXD files have to
be found at Cython'ization stage (through -I options), while SO/PYD files at
execution stage (Python stuff). No need for a strong relationship between
them.

Meanwhile, I'm patching the generated C code to get round the few issues I
have around that. I'm reporting these issues, hoping they will be
considered.

Now if you tell me that it is an intented behaviour, and you don't plan to
modify it (or support both?), I will stop ennoying you with my requests.
This also means that I could reconsider the use of Cython for our needs.
Which would be a pity, I like the philosophy.

If there's still a chance that my request(s) may be supported one day, it
might also be nice to support a syntax like:
  cimport foo "pkg.foo"
That would load foo.pxd from the path list (-I) but would generate the
equivalent import of pkg.foo at runtime.

Cheers,
Stephane

_______________________________________________
Cython-dev mailing list
[email protected]
http://codespeak.net/mailman/listinfo/cython-dev

Reply via email to