bug-lilypond
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Lilypond Python on Windows


From: Simon Dahlbacka
Subject: Re: Lilypond Python on Windows
Date: Wed, 5 Jul 2006 19:21:59 +0300

hmm. looking closer reveals that a lot if not all of the files found in
d:\lilypond\usr\lib\python2.4\lib-dynload also exist in d:\lilypond\usr\bin,
with differing filesizes, judging on sizes I'd guess that lib-dynload
contains debug versions while release versions in bin. and while
d:\lilypond\usr\bin is not directly on path, it will be if cwd is
d:\lilypond\usr\bin

And indeed, if running python from d:\lilypond\usr\bin then every import of
something not builtin fails.

Therefore I'd conclude that the python problem is mixing release/debug
versions



On 7/5/06, Simon Dahlbacka <address@hidden> wrote:


> Anyway, I'll try to pick through the various threads and figure it out,
> but
> if someone has any info about the current architecture of lilypond
> launching
> python, how python finds the libraries it needs, etc..you could save me
> a
> lot of time to understand the issues.
>

[Some ramblings about python ahead..]

(I have my lilypond installed in d:\lilypond)

Basically, when you start python (d:\lilypond\usr\bin\python.exe) it will
import site.py (d:\lilypond\usr\lib\python2.4\site.py)
which performs some initialization and also imports sitecustomize.py (if
available).

I presume the lib directory/directories is settable at compile time, since
in a python distribution from python.org the lib folder is
<installpath>\lib

Anyway if you start up a python console then you can import sys and look
at sys.path to see where it looks for its stuff

>>> import sys
>>> sys.path
['', 'd:\\LilyPond\\usr\\lib/python24.zip',
'd:\\LilyPond\\usr\\lib/python2.4\\',
'd:\\LilyPond\\usr\\lib/python2.4\\plat-mingw32',
'd:\\LilyPond\\usr\\lib/python2.4\\lib-tk',
'd:\\LilyPond\\usr\\lib/python2.4\\lib-dynload']
>>>


However, *something* is badly broken, since when you start python by
itself in verbose mode you (which you do, because of the message that import
site failed..) get the following message
SystemError: NULL result without error in PyObject_Call

Here PyObject_Call is "the" C api function for calling python
functions/methods/everything and in the C API you return NULL when something
went bad, but you also set the exeption to throw in python land by
PyErr_Set* functions

And here it seems that some function call failed, but did not set the
exeption properly. To get to the bottom with this probably would require
running under a debugger..

..fiddling around further reveals that
import os
also fails with the same error message

The lilypond python seems to be built with a lot less "builtin modules"
than a python.org python
[Lilypond python]
>>> sys.builtin_module_names
('__builtin__', '__main__', '_codecs', '_sre', '_symtable', 'errno',
'exceptions', 'gc', 'imp', 'marshal', 'nt', 'signal', 'sys', 'xxsubtype',
'zipimport')

[vanilla python 2.4.1]
>>> sys.builtin_module_names
('__builtin__', '__main__', '_bisect', '_codecs', '_codecs_cn',
'_codecs_hk', '_codecs_iso2022', '_codecs_jp', '_codecs_kr', '_codecs_tw',
'_csv', '_heapq', '_hotshot', '_locale', '_multibytecodec', '_random',
'_sre', '_subprocess', '_symtable', '_weakref', '_winreg', 'array',
'audioop', 'binascii', 'cPickle', 'cStringIO', 'cmath', 'collections',
'datetime', 'errno', 'exceptions', 'gc', 'imageop', 'imp', 'itertools',
'marshal', 'math', 'md5', 'mmap', 'msvcrt', 'nt', 'operator', 'parser',
'regex', 'rgbimg', 'sha', 'signal', 'strop', 'struct', 'sys', 'thread',
'time', 'xxsubtype', 'zipimport')

lilypond python instead provides them in
d:\lilypond\usr\lib\python2.4\lib-dynload. A number of these seem to be
broken though, the error being
SystemError: NULL result without error in PyObject_Call
alternatively
ImportError: DLL load failed: Attempt to access invalid address


Hope this helps someone..

/Simon



reply via email to

[Prev in Thread] Current Thread [Next in Thread]