<html>
  <head>
    <meta content="text/html; charset=windows-1252"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    Hi Phil,<br>
    <br>
    Is that rev. 654 'Fixed object leaks in the importing of
    side-by-side packages.' with changes to
    'pyqtdeploy/builder/lib/pdytools_module.cpp'?<br>
    <br>
    <meta charset="utf-8">
    I've got a feeling this is something to do with me physically
    displacing the .so but I can pull this version if you think its
    worth a go.<br>
    <br>
    Cheers, Rob<br>
    <br>
    <meta charset="utf-8">
    <br>
    <br>
    <div class="moz-cite-prefix">On 04/02/2016 12:50, Phil Thompson
      wrote:<br>
    </div>
    <blockquote
      cite="mid:80C91E7E-784F-4196-9DF1-7105FA724E8F@riverbankcomputing.com"
      type="cite">
      <pre wrap="">On 4 Feb 2016, at 12:36 pm, Robert Kent <a class="moz-txt-link-rfc2396E" href="mailto:rob@gulon.co.uk"><rob@gulon.co.uk></a> wrote:
</pre>
      <blockquote type="cite">
        <pre wrap="">
Hi All,

I'm using pyqtdeploy 1.2 on OSX to package my application and so far have succeeded in getting NumPy and matplotlib to build. I (and Google!) came up with a method for including modules built as static objects (.so) by adding them to the Resources directory of the app bundle and then adding a hook via sys.meta_path to allow them to be imported outwith the resource system. To clarify, this means that anything that is a .py file is built into the application via the Qt resource system and anything that is an .so file is packaged separately. This has worked fine until I tried it with SciPy and it's cythonized .so files which throw a SystemError on import as follows:

...
File ":/scipy/optimize/__init__.py", line 233, in <module>
  File "bootstrap.py", line 2237, in _find_and_load
  File "bootstrap.py", line 2226, in _find_and_load_unlocked
  File "bootstrap.py", line 1191, in _load_unlocked
  File "bootstrap.py", line 1161, in _load_backward_compatible
  File ":/scipy/optimize/_minimize.py", line 26, in <module>
  File "bootstrap.py", line 2237, in _find_and_load
  File "bootstrap.py", line 2226, in _find_and_load_unlocked
  File "bootstrap.py", line 1191, in _load_unlocked
  File "bootstrap.py", line 1161, in _load_backward_compatible
  File ":/scipy/optimize/_trustregion_dogleg.py", line 5, in <module>
  File "bootstrap.py", line 2237, in _find_and_load
  File "bootstrap.py", line 2226, in _find_and_load_unlocked
  File "bootstrap.py", line 1191, in _load_unlocked
  File "bootstrap.py", line 1161, in _load_backward_compatible
  File ":/scipy/linalg/__init__.py", line 175, in <module>
  File "bootstrap.py", line 2237, in _find_and_load
  File "bootstrap.py", line 2226, in _find_and_load_unlocked
  File "bootstrap.py", line 1191, in _load_unlocked
  File "bootstrap.py", line 1161, in _load_backward_compatible
  File ":/scipy/linalg/basic.py", line 21, in <module>
  File "bootstrap.py", line 2237, in _find_and_load
  File "bootstrap.py", line 2226, in _find_and_load_unlocked
  File "bootstrap.py", line 1191, in _load_unlocked
  File "bootstrap.py", line 1161, in _load_backward_compatible
  File "__main__.py", line 30, in load_module
  File ":/imp.py", line 243, in load_module
  File "scipy/linalg/_solve_toeplitz.pyx", line 4, in init scipy.linalg._solve_toeplitz (scipy/linalg/_solve_toeplitz.c:19797)
SystemError: Parent module '' not loaded, cannot perform relative import

The whole 'relative import' bit seems to be a red herring as what its actually trying to do at that point is import bits of numpy. I'm guessing this is to do with me moving these .so files outside of the normal import tree so it cant find things...

I'm just wondering if Phil or anybody else has had success in including either SciPy or any other cythonized modules in a pyqtdeploy project and, if so, how?
</pre>
      </blockquote>
      <pre wrap="">
There is a fix in the 1.2-maint branch in hg for a problem triggered by cython. It doesn't look like the same problem, but it might be worth a try.

Phil</pre>
    </blockquote>
    <br>
  </body>
</html>