Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Python > Is there any way to make Python play well with stow?

Reply
Thread Tools

Is there any way to make Python play well with stow?

 
 
Tim Bradshaw
Guest
Posts: n/a
 
      06-01-2004
I'd like to be able to install python with stow, and then to install
various modules which use distutils, also with stow. This currently
pretty much won't work, because Python chases symlinks to set
sys.prefix, which means that the site path gets set to the `true'
location rather than the one with all the links. This means that
Python won't find modules you install with stow, unless you glue the
linky site directory into sys.path. Doing this is OK for
applications, but it means that things like distutils break if there
are modules which depend on other modules which you've installed,
because it won't find those modules.

As an example, assume I have things appear in /local/ and the stow dir
is /local/packages/. So I build python with:

$ ./configure --prefix=/local
$ make
$ make install prefix=/local/packages/python-2.3.4

Then stow it:

$ (cd /local/packages; stow python-2.3.4)

This python's sys.path will have /local/packages in it since
sys.prefix &co have that.

Now install a module, say Numeric:

$ python setup.py install --prefix=/local/packages/numeric
$ (cd /local/packages; stow numeric)

At this point stow will have set things up so that
/local/lib/python-2.3/site-packages/ is a directory (not a link) which
contains links such as Numeric and Numeric.pth pointing to the
appropriate places under /local/packages/numeric/.

Unfortunately python will never even look for this site-packages dir
because of the link-following in the computation of sys.prefix: it
only considers /local/packages/python-2.3.4/lib/python2.3/site-packages/.
So any other module I try and install which needs Numeric will fail.

I can fix this by adding a .pth file to the `real' site packages dir
which points at the linky one, but this is something extra to do every
time I install Python: I'd really like to be able to keep the python
directory tree completely clean.

Is there anything else I can do that's not essentially equivalent to
this (so, for instance, not making the real site-packages dir be a
symlink back to the linky one...)?

I think it would be a good thing if the computation of sys.prefix did
the following: if the python binary is a symbolic link, then before
chasing the symlink, still look for things `this side' of it. If you
find something that looks like a python installation, then construct
sys.prefix &c using those paths. Only if that fails should you chase
the link and look for an installation on the far side of it. This
would allow things like stow to work transparently, I think. Of
course there may be disadvantages of doing this which I haven't
thought of.

Thanks

--tim
 
Reply With Quote
 
 
 
 
Tim Bradshaw
Guest
Posts: n/a
 
      06-02-2004
tfb+ (Tim Bradshaw) wrote in message news:<. com>...
> I'd like to be able to install python with stow, and then to install
> various modules which use distutils, also with stow. This currently
> pretty much won't work, because Python chases symlinks to set
> sys.prefix, which means that the site path gets set to the `true'
> location rather than the one with all the links. This means that
> Python won't find modules you install with stow, unless you glue the
> linky site directory into sys.path. Doing this is OK for
> applications, but it means that things like distutils break if there
> are modules which depend on other modules which you've installed,
> because it won't find those modules.


> [and so on]


About 5 minutes after posting this I discovered PYTHONHOME, which
completely stops all the intuiting sys.prefix stuff. I feel like a
fool now, and more so since posting via google means I couldn't even
point out my idiocy until today.

--tim
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Python does not play well with others John Nagle Python 117 02-07-2007 10:00 PM
501 PIX "deny any any" "allow any any" Any Anybody? Networking Student Cisco 4 11-16-2006 10:40 PM
Is there any way to make destination URL see a different referer? Chris Ianson HTML 1 04-01-2006 08:04 AM
Is there any way to make a SBLive! sound card run as a SB16 under DOS? Sonic Computer Support 2 12-21-2003 10:42 PM
Is there any way to make this look good. mike HTML 3 08-09-2003 03:29 PM



Advertisments
 



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57