Re: sys.path.insert

From:

Han-Wen Nienhuys

Subject:

Re: sys.path.insert

Date:

Thu, 25 Jan 2007 15:39:23 +0100

User-agent:

Thunderbird 1.5.0.9 (X11/20061219)

Marijn Schouten (hkBst) escreveu:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> Han-Wen Nienhuys wrote:
>> Marijn Schouten (hkBst) escreveu:
>>> -----BEGIN PGP SIGNED MESSAGE-----
>>> Hash: SHA1
>>>
>>> Han-Wen Nienhuys wrote:
>>>> Marijn Schouten (hkBst) escreveu:
>>>>> -----BEGIN PGP SIGNED MESSAGE-----
>>>>> Hash: SHA1
>>>>>
>>>>> Marijn Schouten wrote:
>>>>>> Hi list,
>>>>>>
>>>>>> this is a little snippet from the gentoo build script for lilypond
>>>>>>
>>>>>> # lilypond python scripts *prepend* /usr/share/lilypond/${PV}/python to
>>>>>> # sys.path, causing python to attempt to rebuild the pyc, which
>>>>>> generates
>>>>>> # sandbox errors (and is wrong anyway). Change this policy to use
>>>>>> # sys.path.append so that PYTHONPATH, set by the Makefiles, takes
>>>>>> # precendence.
>>>>>> grep -rlZ sys.path.insert --include \*.py ${S} | xargs -0r sed -i
>>>>>> 's/sys.path.insert \?(0, /sys.path.append (/'
>>>>>>
>>>>>> any thoughts?
>>>> who is setting PYTHONPATH, and for what reason?
>>> on my box it is set to /usr/lib/portage/pym
>>> The Gentoo package manager portage is written in python.
>> ok, and which pyc are rebuilt ?
>>
>> We prepend to be sure that the .pys that we load are the ones from the
>> current source package, and not from older versions that linger
>> around on the build system.
>
> The ones from an already installed version of lilypond, ironically.
I was slightly mistaken. The sys.path insert is there just to find
the python modules, and the insert is a preventive measure to be
sure we load the right ones.
The problem is that the lilypond-book script is run during the compile,
triggering .py recompiles of the wrong files.
This should be fixed in current GIT.
--
Han-Wen Nienhuys - address@hidden - http://www.xs4all.nl/~hanwen
LilyPond Software Design
-- Code for Music Notation
http://www.lilypond-design.com