[IPython-user]: IPython install under Win2000
Fernando Perez
Fernando.Perez at colorado.edu
Mon Jul 18 20:57:49 CDT 2005
Alan G Isaac wrote:
> On Mon, 18 Jul 2005, Fernando Perez apparently wrote:
>
>>Unless someone complains soon, this will go into SVN later today
>
>
> Well my only "complaint" is that you do not start by trying
> os.path.expanduser("~")
> which I took from the discussion to be supported on Un*x,
> many Windows, and Mac OSX.
Not really:
In [3]: os.path.expanduser??
Type: function
Base Class: <type 'function'>
String Form: <function expanduser at 0x400585dc>
Namespace: Interactive
File: /usr/lib/python2.3/posixpath.py
Definition: os.path.expanduser(path)
Source:
def expanduser(path):
"""Expand ~ and ~user constructions. If user or $HOME is unknown,
do nothing."""
if not path.startswith('~'):
return path
i = path.find('/', 1)
if i < 0:
i = len(path)
if i == 1:
if 'HOME' not in os.environ:
import pwd
userhome = pwd.getpwuid(os.getuid()).pw_dir
else:
userhome = os.environ['HOME']
else:
import pwd
try:
pwent = pwd.getpwnam(path[1:i])
except KeyError:
return path
userhome = pwent.pw_dir
if userhome.endswith('/'):
i += 1
return userhome + path[i:]
It's little more than $HOME, and I very much doubt that it's of a whole lot of
use under win32, given that if $HOME is undefined, it goes to pwd.getpwuid:
In [5]: pwd.getpwuid??
Type: builtin_function_or_method
Base Class: <type 'builtin_function_or_method'>
String Form: <built-in function getpwuid>
Namespace: Interactive
Docstring:
getpwuid(uid) -> (pw_name,pw_passwd,pw_uid,
pw_gid,pw_gecos,pw_dir,pw_shell)
Return the password database entry for the given numeric user ID.
See pwd.__doc__ for more on password database entries.
That sounds about as Unixy as it gets.
In summary, expanduser('~') is not really much better than a plain
environ['HOME'], so I think something like what I did (which in spirit is
similar to the myriad solutions other projects seem to have used for the same
problem) is OK. If only win32 could default to sensibly honoring $HOME, but I
won't start ranting again :)
So off to SVN it goes.
Cheers,
f
More information about the IPython-user
mailing list