While I'm not proud of this (it's a complete hack), the following seems to
work for me. This is with the pubsub included with wxpython 2.8.11 and
later, and you must import in your application like this:
from wx.lib.pubsub import setuparg1
from wx.lib.pubsub import pub as Publisher
I can only verify that this works with the arg1 protocol; it probably will
with kwargs as well, but I have not verified.
Anyway, here are the two hooks:
hook-wx.lib.pubsub.core.py:
------------------------- cut here ----
import os
import sys
def hook(mod):
pth = str(mod.__path__[0])
if os.path.isdir(pth):
# if the user imported setuparg1, this is detected by the
hook-wx.lib.pubsub.setuparg1.py hook. That
# hook sets sys.wxpubsub to "arg1", and we set the appropriate path
here.
protocol = getattr(sys,'wxpubsub','kwargs')
print "wx.lib.pubsub: Adding %s protocol path"%protocol
mod.__path__.append(os.path.normpath(os.path.join(pth, protocol)))
return mod
------------------------- cut here ----
And this for hook-wx.lib.pubsub.setuparg1.py:
------------------------- cut here ----
import os
import sys
# if the user imports setuparg1, we just set an attribute in sys that
allows us to later find out
# about this.
sys.wxpubsub = "arg1"
------------------------- cut here ----
I told you it was a hack! :O Maybe the pyinstaller folks who know what
they are doing can look at this and determine the correct solution.
On Thu, Jun 21, 2012 at 2:48 PM, Tom <[email protected]> wrote:
> Was this ever resolved, I'm having trouble as well. My google-fu has
> failed me the last couple days. I know its something simple I don't really
> see anything in the last 6-8 months but I still cant get it to work.
>
> I'm using:
> XP Pro SP3
> Python V 2.7.3
> wx.version returns '2.8.12.1 (msw-ansi)'
> I have tried both stable pyinstaller and development one from yesterday
> (possible version: 2145d84)
>
> When I switched from importing Publisher to
>
> I've even tried including this hook below:
> import os
>
> def hook(mod):
> pth = str(mod.__path__[0])
> if os.path.isdir(pth):
> mod.__path__.append(os.path.normpath(os.path.join(pth, 'kwargs')))
> return mod
>
> After changing the publisher import:
> from wx.lib.pubsub import setupkwargs
> from wx.lib.pubsub import setuparg1
> from wx.lib.pubsub import pub as Publisher
> (I have tried every combination of the first two, with both, without one
> or the other, and with only import Publisher..)
> With one or the other I seem to get:
>
> C:\Documents and Settings\Tom>"C:\Documents and
> Settings\Tom\Desktop\PyPackagers
> \pyinstaller-pyinstaller-2145d84\dist\startme.exe"
> Traceback (most recent call last):
> File "<string>", line 7, in <module>
> File "C:\Documents and
> Settings\Tom\Desktop\pyinstaller-pyinstaller-2145d84\Py
> Installer\loader\iu.py", line 431, in importHook
> File "C:\Documents and
> Settings\Tom\Desktop\pyinstaller-pyinstaller-2145d84\Py
> Installer\loader\iu.py", line 480, in doimport
> File "C:\Documents and
> Settings\Tom\Desktop\pyinstaller-pyinstaller-2145d84\bu
> ild\pyi.win32\startme\out00-PYZ.pyz\wx.lib.pubsub.pub", line 24, in
> <module>
> File "C:\Documents and
> Settings\Tom\Desktop\pyinstaller-pyinstaller-2145d84\Py
> Installer\loader\iu.py", line 386, in importHook
> File "C:\Documents and
> Settings\Tom\Desktop\pyinstaller-pyinstaller-2145d84\Py
> Installer\loader\iu.py", line 480, in doimport
> File "C:\Documents and
> Settings\Tom\Desktop\pyinstaller-pyinstaller-2145d84\bu
> ild\pyi.win32\startme\out00-PYZ.pyz\wx.lib.pubsub.core.listener", line 13,
> in <m
> odule>
> File "C:\Documents and
> Settings\Tom\Desktop\pyinstaller-pyinstaller-2145d84\Py
> Installer\loader\iu.py", line 409, in importHook
> ImportError: No module named listenerimpl
>
>
>
>
> On Tuesday, February 7, 2012 7:12:55 PM UTC-5, marc wrote:
>>
>> Hi all;
>>
>> I can see this has been discussed before in previous emails, but after
>> reading them, I still cannot resolve this issue.
>> I am trying to use pyinstaller to build a Windows executable - where
>> code makes use of :
>>
>> wx.lib.pubsub import Publisher
>>
>> ... allowing the model to notify the controller that a change has
>> occurred.
>>
>> However, when the executable is run, I get a "ImportError: cannot
>> import name Publisher" error.
>> I've tried using all the different imports mentioned on various
>> threads, most work from Python, but fail to import once run from a
>> Windows executable built with pyinstaller
>>
>> Could someone please let me know - currently, what's the best work
>> around for this issue? I'd really like to get this resolved.
>>
>> Many thanks for your help,
>> Marc
>>
> --
> You received this message because you are subscribed to the Google Groups
> "PyInstaller" group.
> To view this discussion on the web visit
> https://groups.google.com/d/msg/pyinstaller/-/9aFhWy6-PcoJ.
>
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected].
> For more options, visit this group at
> http://groups.google.com/group/pyinstaller?hl=en.
>
--
Daniel Hyams
[email protected]
--
You received this message because you are subscribed to the Google Groups
"PyInstaller" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/pyinstaller?hl=en.