[Top][All Lists]
[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 18:51:55 +0300 |
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