[Numpy-discussion] Round 2 with Leopard+Python
David Cournapeau
david@ar.media.kyoto-u.ac...
Sun Nov 4 20:58:41 CST 2007
Brian Granger wrote:
> Hi,
>
> In the process of working through the issues with sys.path on Leopard,
> I have found another potential Leopard bug that is particularly nasty.
>
> In Tiger, sudo preserves environment variables:
>
> $ export FOO=/tmp
> $ python -c "import os; print os.environ['FOO']"
> /tmp
> $ sudo python -c "import os; print os.environ['FOO']"
> /tmp
>
> But, in Leopard, sudo does not perserve environment variables:
>
> $ export FOO=/tmp
> $ python -c "import os; print os.environ['FOO']"
> /tmp
> $ sudo python -c "import os; print os.environ['FOO']"
> Password:
> Traceback (most recent call last):
> File "<string>", line 1, in <module>
> File "/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/UserDict.py",
> line 22, in __getitem__
> raise KeyError(key)
> KeyError: 'FOO'
>
> This is a big problem. First, if you have set PYTHONPATH to point
> sys.path at the site-packages in /Library, this setting will be lost
> when you do:
>
> sudo python setup.py install
>
> On another package. I encountered this in building pytables, which
> requires numpy >= 1.0.3. I had installed numpy 1.0.4, and set my
> PYTHONPATH to point to it. But, the pytables setup.py script failts
> because PYTHONPATH is lost and it only sees the older (1.0.1) builtin
> numpy.
>
> Second, some setup.py scripts use environment variables to determine
> how things are built, find other dependencies, etc. Currently, this
> will fail on Leopard if such packages are installed into locations
> that require sudo. I haven't tried it yet, but I expect that this
> will also hold true for other python installations. The behavior also
> shows up with ruby on Leopard.
>
> The solution currently is to install all packages to locations that
> don't require sudo to write to. I will file a bug report, but until
> the bug is fixed, we should explore putting a note on the numpy/scipy
> site - and even possibly on the python.org site to describe the
> problem and its workaround.
>
Have you tried the env_reset option (man sudoers) ? IMHO, the Leopard
behaviour looks saner than Tiger, from what you are saying. Having
PYTHONPATH overridable by the user looks like a good tool for unwanted
privileges escalation... Actually, looking a bit at sudo NEWS file, you
can see that PYTHONPATH was added as an env variable to disable
something like 2 years ago, which explains the behaviour (sudo has been
updated, I suppose, and Tiger is a bit more than 2 years old if I
remember correctly).
Do you *really* need to install numpy in a location only writable
through sudo ?
cheers,
David
More information about the Numpy-discussion
mailing list