On 2 December 2014 at 00:17, Ned Deily <n...@acm.org> wrote:

> In article
> <cacgdh2hh5cvykbbca+xf3+vkg_hvzbg8mqe7qaiti3ukxwv...@mail.gmail.com>,
>  Paul Wiseman <poal...@gmail.com> wrote:
>
> > On 1 December 2014 at 23:57, Ned Deily <n...@acm.org> wrote:
> >
> > > [duplicate reply as the first seems to have disappeared]
> > >
> > > In article
> > > <cacgdh2hoqfsdrfdpblnheeppowquoqskf_bgdovga7+z05e...@mail.gmail.com>,
> > >  Paul Wiseman <poal...@gmail.com> wrote:
> > > > I don't think it's either of those. I think that hashlib.py must have
> > > > changed in 2.7.9 from 2.7.8 (no longer has
> > > _hashlib.openssl_md_meth_names) so
> > > > the built app (running 2.7.8) expected that attribute to be there,
> but
> > > > somehow py2app or my usage of it is causing it to look in the system
> > > > libraries over the frozen libraries. Installing 2.7.8 again hides the
> > > issue
> > > > because whichever hashlib it uses would have the same behaviour
> because
> > > > they'll be identical (both from v2.7.8)
> > > > > In any case, a fresh install seems to have solved the problem.
> > > > > On Dec 1, 2014, at 7:29 AM, Paul Wiseman <poal...@gmail.com>
> wrote:
> > > > > I have a frozen app installed (built on a different machine using
> > > python
> > > > > 2.7.8 32/ppc)
> > > > >
> > > > > I Installed python 2.7.9rc1 (32/pcc python.org installer) and I
> > > started
> > > > > seeing errors from the built app on startup
> > > > >
> > > > > the error occurred from import hashlib
> > > > >
> > > > >   File
> > > > >
> > >
> "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/hashlib.py"
> > > > > ,
> > > > > line 138, in <module>
> > > > >     _hashlib.openssl_md_meth_names)
> > > > > AttributeError: 'module' object has no attribute
> > > 'openssl_md_meth_names'
> > > > >
> > > > > Installing 2.7.8 again on this machine, and the frozen app started
> > > working
> > > > > again with no other changes.
> > > > >
> > > > > Is this a problem with my setup or an issue with the freezing
> process?
> > >
> > > The whole point of using py2app in normal, non-alias mode is to provide
> > > a self-contained, standalone app not dependent on any external
> > > Python-provided infrastructure, e.g. py files or extension modules or
> > > shared libs so something is wrong here.  The 'openssl_md_meth_names'
> was
> > > added to _hashlib.so for 2.7.9 (along with a lot of other changes to
> > > support the backport of upgraded ssl functionality from Python 3) so
> > > what appears to be happening here is that something in your app is
> > > incorrectly importing hashlib.py from the 2.7.9 installation in
> > > /Library/Frameworks along with (correctly) importing _hashlib.so from
> > > your py2app-produced app bundle.
> >
> >
> > Yea I think you're right- I'm pretty sure that's what it must be
> >
> >
> > > I'm no expert on py2app but I did
> > > verify that a very simple app that used hashlib and was built with a
> > > current py2app and 2.7.8 did, in fact, work correctly when run in the
> > > presence of 2.7.9rc1.  So the question is what is going on with your
> > > app.  Questions that come to mind: (1) What is the full traceback (e.g.
> > > which file causes hashlib to be imported)?  (2) What is the value of
> > > sys.path at that point?  (3) What third-party modules are installed in
> > > the app and were any installed after using py2app?
> > >
> > >
> > This is the full traceback:
> >
> > Traceback (most recent call last):
> >   File "/Applications/Utility.app/Contents/Resources/__boot__.py", line
> > 316, in <module>
> >     _run()
> >   File "/Applications/Utility.app/Contents/Resources/__boot__.py", line
> > 311, in _run
> >     exec(compile(source, path, 'exec'), globals(), globals())
> >   File "/Applications/Utility.app/Contents/Resources/context_main.py",
> line
> > 3, in <module>
> >     from PythonApp.context.context import main
> >   File "PythonApp/context/context.pyc", line 3, in <module>  # from
> > PythonApp.redirectstd import redirect
> >   File "PythonApp/redirectstd.pyc", line 5, in <module>  # from PythonApp
> > import settings
> >   File "PythonApp/settings.pyc", line 7, in <module>  # import hashlib
> >   File
> >
> "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/hashlib.py",
> > line 138, in <module>
> >     _hashlib.openssl_md_meth_names)
> > AttributeError: 'module' object has no attribute 'openssl_md_meth_names'
> > 2014-12-01 23:44:57.204 Utility[72506:4648486] Utility Error
> >
> > I printed out sys.path right before the import hashlib,
> > ['/Library/Frameworks/Python.framework/Versions/2.7/lib/python27.zip',
> > '/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7',
> >
> '/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin',
> >
> '/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac',
> >
> '/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-
> > scriptpackages',
> > '/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk',
> >
> '/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-old',
> > '/Applications/Utility.app/Contents/Resources/lib/python2.7/lib-dynload',
> >
> '/Applications/Utility.app/Contents/Resources/lib/python2.7/site-packages.zip'
> > ,
> >
> '/Applications/Utility.app/Contents/Resources/lib/python2.7/site-packages']
> >
> > There's no modifications in the code to sys.path or the pythonpath (I do
> > have modifications to PYTHONPATH in my .bash_profile- but those aren't
> > showing up in the sys.path output here, and I'm pretty sure that
> shouldn't
> > affect it right?)
>
> That sys.path certainly looks wrong.  There shouldn't be any
> /Library/Frameworks paths when running in the app.  Yeah, your shell
> profile shouldn't enter into it when running a launched app.  You could
> also check the values for sys.executable, sys.prefix, and
> sys.exec_prefix.
>
>
I tracked down the issue! Someone (possibly me) had put the
line sys.path.insert(0,os.path.abspath(os.path.curdir)) at the top of the
build script - I didn't think to search that when looking for sys.path
modifications.

I'm not sure what the purpose of that line was, but removing it solves the
issue and doesn't appear to have broken anything.

Thanks for your help!! :)


> > There's quite a lot of 3rd party modules, non of which will have been
> > installed after the app was built. hashlib is imported pretty early,
> before
> > any 3rd party imports if that makes a difference.
> >
> > I think I'll see tomorrow if I can't make a small sample app and setup.py
> > with py2app which I can reproduce the problem and I'll post it up on
> here.
>
> Sounds like a good idea.  Of course, make sure you have the latest
> version of py2app and its dependencies, too.  Good luck!
>
> --
>  Ned Deily,
>  n...@acm.org
>
> _______________________________________________
> Pythonmac-SIG maillist  -  Pythonmac-SIG@python.org
> https://mail.python.org/mailman/listinfo/pythonmac-sig
> unsubscribe: https://mail.python.org/mailman/options/Pythonmac-SIG
>
_______________________________________________
Pythonmac-SIG maillist  -  Pythonmac-SIG@python.org
https://mail.python.org/mailman/listinfo/pythonmac-sig
unsubscribe: https://mail.python.org/mailman/options/Pythonmac-SIG

Reply via email to