Below is the code in mpl that actually does the lookup. To get to the
bottom of this, I would try to figure out in your Apache/PHP environment
what
a) what os.path.expanduser("~") gives
b) what the values of the environment variables "HOME", "USERPROFILE",
"USER", and "TMP" are.
I suspect either matplotlib is not getting run under user 'apache' as it
should, or there is something fishy about the environment.
Cheers,
Mike
def _get_home():
"""Find user's home directory if possible.
Otherwise raise error.
:see:
http://mail.python.org/pipermail/python-list/2005-February/263921.html
"""
path=''
try:
path=os.path.expanduser("~")
except:
pass
if not os.path.isdir(path):
for evar in ('HOME', 'USERPROFILE', 'TMP'):
try:
path = os.environ[evar]
if os.path.isdir(path):
break
except: pass
if path:
return path
else:
raise RuntimeError('please define environment variable $HOME')
get_home = verbose.wrap('$HOME=%s', _get_home, always=False)
def _get_configdir():
"""
Return the string representing the configuration dir.
default is HOME/.matplotlib. you can override this with the
MPLCONFIGDIR environment variable
"""
configdir = os.environ.get('MPLCONFIGDIR')
if configdir is not None:
if not _is_writable_dir(configdir):
raise RuntimeError('Could not write to
MPLCONFIGDIR="%s"'%configdir)
return configdir
h = get_home()
p = os.path.join(get_home(), '.matplotlib')
if os.path.exists(p):
if not _is_writable_dir(p):
raise RuntimeError("'%s' is not a writable dir; you must set
%s/.matplotlib to be a writable dir. You can also set environment
variable MPLCONFIGDIR to any writable directory where you want
matplotlib data stored "% (h, h))
else:
if not _is_writable_dir(h):
raise RuntimeError("Failed to create %s/.matplotlib;
consider setting MPLCONFIGDIR to a writable directory for matplotlib
configuration data"%h)
os.mkdir(p)
"Jonathan Hayward, http://JonathansCorner.com" wrote:
> User apache exists with home directory /var/www, which exists.
>
> On Fri, Aug 1, 2008 at 11:59 AM, Michael Droettboom <[EMAIL PROTECTED]
> <mailto:[EMAIL PROTECTED]>> wrote:
>
> It's supposed to default to the current user's home directory.
> Perhaps "apache" doesn't have a home directory?
>
>
> Cheers,
> Mike
>
> "Jonathan Hayward, http://JonathansCorner.com" wrote:
>
> I found a reason for the behavior:
>
> The script was running as user apache, but trying to open
> /root/.matplotlib, and /root was mode 0700. It stopped
> crashing on import after I made /root mode 0711.
>
> This is somewhat surprising behavior to me; shouldn't it be
> defaulting to something besides expected access to ~root?
>
> On Fri, Aug 1, 2008 at 11:38 AM, Jonathan Hayward,
> http://JonathansCorner.com <[EMAIL PROTECTED]
> <mailto:[EMAIL PROTECTED]>
> <mailto:[EMAIL PROTECTED]
> <mailto:[EMAIL PROTECTED]>>> wrote:
>
> Tried that and reran it; I'm getting substantially the same
> stacktrace:
>
>
> File "/home/jhayward/bintmp/test.py", line 5, in <module>
> import matplotlib;
> File
>
> "/usr/lib64/python2.5/site-packages/matplotlib/__init__.py", line
> 639, in <module>
> rcParams = rc_params()
> File
>
> "/usr/lib64/python2.5/site-packages/matplotlib/__init__.py", line
> 562, in rc_params
> fname = matplotlib_fname()
> File
>
> "/usr/lib64/python2.5/site-packages/matplotlib/__init__.py", line
> 513, in matplotlib_fname
> fname = os.path.join(get_configdir(), 'matplotlibrc')
> File
>
> "/usr/lib64/python2.5/site-packages/matplotlib/__init__.py", line
> 207, in wrapper
> ret = func(*args, **kwargs)
> File
>
> "/usr/lib64/python2.5/site-packages/matplotlib/__init__.py", line
> 403, in _get_configdir
> raise RuntimeError("Failed to create %s/.matplotlib;
> consider
> setting MPLCONFIGDIR to a writable directory for matplotlib
> configuration data"%h)
> RuntimeError: Failed to create /root/.matplotlib; consider
> setting
> MPLCONFIGDIR to a writable directory for matplotlib
> configuration data
>
> It's /path/matplotlibrc and not /path/.matplotlibrc or anything
> like that?
>
>
> On Fri, Aug 1, 2008 at 10:51 AM, Michael Droettboom
> <[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>
> <mailto:[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>>> wrote:
>
> Just throwing out a suggestion here: You could try
> putting a
> matplotlibrc file in the same directory as your Python
> script
> -- it will use that instead of the one in ~/.matplotlib.
>
> Cheers,
> Mike
>
>
> "Jonathan Hayward, http://JonathansCorner.com" wrote:
>
> I have a PHP script which authenticates a user and I am
> trying to get the PHP script to wrap a Python
> script using
> matplotlib.
>
> As it is, the script mostly works when invoked from the
> command line or as its own CGI script. When I call
> it from
> a PHP script, it doesn't produce output, and
> testing found
> that when I call a Python script from a PHP script,
> output
> works before but not after "import matplotlib": if
> the PHP
> script calls a script of:
>
> #!/usr/bin/python
> print "Before import matplotlib."
> import matplotlib;
> print "After import matplotlib."
>
> the first print statement succeeds but the second one
> fails; the server log shows a crash of:
>
> Before import matplotlib.Traceback (most recent
> call last):
> File "/home/jhayward/bintmp/test.py", line 5, in
> <module>
> import matplotlib;
> File
>
> "/usr/lib64/python2.5/site-packages/matplotlib/__init__.py",
> line 639, in <module>
> rcParams = rc_params()
> File
>
> "/usr/lib64/python2.5/site-packages/matplotlib/__init__.py",
> line 562, in rc_params
> fname = matplotlib_fname()
> File
>
> "/usr/lib64/python2.5/site-packages/matplotlib/__init__.py",
> line 513, in matplotlib_fname
> fname = os.path.join(get_configdir(),
> 'matplotlibrc')
> File
>
> "/usr/lib64/python2.5/site-packages/matplotlib/__init__.py",
> line 207, in wrapper
> ret = func(*args, **kwargs)
> File
>
> "/usr/lib64/python2.5/site-packages/matplotlib/__init__.py",
> line 403, in _get_configdir
> raise RuntimeError("Failed to create %s/.matplotlib;
> consider setting MPLCONFIGDIR to a writable
> directory for
> matplotlib configuration data"%h)
> RuntimeError: Failed to create /root/.matplotlib;
> consider
> setting MPLCONFIGDIR to a writable directory for
> matplotlib configuration data
>
> I think this error is somewhat misleading; it persisted
> after I ran a "chmod -R 1777 /root/.matplotlib".
>
> What is the proper way to adjust things so
> matplotlib will
> be happy with its .matplotlib directory?
>
> -- -- Jonathan Hayward,
> [EMAIL PROTECTED]
> <mailto:[EMAIL PROTECTED]>
> <mailto:[EMAIL PROTECTED]
> <mailto:[EMAIL PROTECTED]>>
> <mailto:[EMAIL PROTECTED]
> <mailto:[EMAIL PROTECTED]>
> <mailto:[EMAIL PROTECTED]
> <mailto:[EMAIL PROTECTED]>>>
>
>
> ** To see an award-winning website with stories,
> essays,
> artwork,
> ** games, and a four-dimensional maze, why not visit my
> home page?
> ** All of this is waiting for you at
> http://JonathansCorner.com
>
> ++ Would you like to curl up with one of my
> hardcover books?
> ++ You can now get my books from http://CJSHayward.com
>
>
> ------------------------------------------------------------------------
>
>
>
> -------------------------------------------------------------------------
> This SF.Net email is sponsored by the Moblin Your Move
> Developer's challenge
> Build the coolest Linux based applications with
> Moblin SDK
> & win great prizes
> Grand prize is a trip for two to an Open Source event
> anywhere in the world
>
> http://moblin-contest.org/redirect.php?banner_id=100&url=/
> <http://moblin-contest.org/redirect.php?banner_id=100&url=/>
>
> <http://moblin-contest.org/redirect.php?banner_id=100&url=/
> <http://moblin-contest.org/redirect.php?banner_id=100&url=/>>
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> Matplotlib-users mailing list
> [email protected]
> <mailto:[email protected]>
> <mailto:[email protected]
> <mailto:[email protected]>>
>
>
> https://lists.sourceforge.net/lists/listinfo/matplotlib-users
>
>
> -- Michael Droettboom
> Science Software Branch
> Operations and Engineering Division
> Space Telescope Science Institute
> Operated by AURA for NASA
>
>
>
>
> -- -- Jonathan Hayward,
> [EMAIL PROTECTED]
> <mailto:[EMAIL PROTECTED]>
> <mailto:[EMAIL PROTECTED]
> <mailto:[EMAIL PROTECTED]>>
>
> ** To see an award-winning website with stories, essays,
> artwork,
> ** games, and a four-dimensional maze, why not visit my
> home page?
> ** All of this is waiting for you at http://JonathansCorner.com
>
> ++ Would you like to curl up with one of my hardcover books?
> ++ You can now get my books from http://CJSHayward.com
>
>
>
>
> --
> -- Jonathan Hayward, [EMAIL PROTECTED]
> <mailto:[EMAIL PROTECTED]>
> <mailto:[EMAIL PROTECTED]
> <mailto:[EMAIL PROTECTED]>>
>
> ** To see an award-winning website with stories, essays, artwork,
> ** games, and a four-dimensional maze, why not visit my home page?
> ** All of this is waiting for you at http://JonathansCorner.com
>
> ++ Would you like to curl up with one of my hardcover books?
> ++ You can now get my books from http://CJSHayward.com
>
>
> --
> Michael Droettboom
> Science Software Branch
> Operations and Engineering Division
> Space Telescope Science Institute
> Operated by AURA for NASA
>
>
>
>
> --
> -- Jonathan Hayward, [EMAIL PROTECTED]
> <mailto:[EMAIL PROTECTED]>
>
> ** To see an award-winning website with stories, essays, artwork,
> ** games, and a four-dimensional maze, why not visit my home page?
> ** All of this is waiting for you at http://JonathansCorner.com
>
> ++ Would you like to curl up with one of my hardcover books?
> ++ You can now get my books from http://CJSHayward.com
--
Michael Droettboom
Science Software Branch
Operations and Engineering Division
Space Telescope Science Institute
Operated by AURA for NASA
-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Matplotlib-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/matplotlib-users