From: \Jonathan H. http://JonathansCorner.com\ <jon...@po...> - 2008-08-01 15:25:47
|
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, chr...@gm... ** 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 |
From: Michael D. <md...@st...> - 2008-08-01 15:55:09
|
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, chr...@gm... > <mailto:chr...@gm...> > > ** 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=/ > ------------------------------------------------------------------------ > > _______________________________________________ > Matplotlib-users mailing list > Mat...@li... > 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 |
From: \Jonathan H. http://JonathansCorner.com\ <jon...@po...> - 2008-08-01 16:38:19
|
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 <md...@st...> 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, chr...@gm... <mailto: >> chr...@gm...> >> >> ** 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=/ >> ------------------------------------------------------------------------ >> >> _______________________________________________ >> Matplotlib-users mailing list >> Mat...@li... >> 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, chr...@gm... ** 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 |
From: \Jonathan H. http://JonathansCorner.com\ <jon...@po...> - 2008-08-01 17:57:07
|
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 <jon...@po...> 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 <md...@st...>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, chr...@gm... <mailto: >>> chr...@gm...> >>> >>> ** 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=/ >>> ------------------------------------------------------------------------ >>> >>> _______________________________________________ >>> Matplotlib-users mailing list >>> Mat...@li... >>> 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, chr...@gm... > > ** 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, chr...@gm... ** 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 |
From: \Jonathan H. http://JonathansCorner.com\ <jon...@po...> - 2008-08-01 16:56:51
|
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 <jon...@po...> 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 <md...@st...>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, chr...@gm... <mailto: >>> chr...@gm...> >>> >>> ** 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=/ >>> ------------------------------------------------------------------------ >>> >>> _______________________________________________ >>> Matplotlib-users mailing list >>> Mat...@li... >>> 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, chr...@gm... > > ** 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, chr...@gm... ** 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 |
From: Michael D. <md...@st...> - 2008-08-01 16:59:48
|
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 <jon...@po... > <mailto:jon...@po...>> 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 > <md...@st... <mailto:md...@st...>> 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, chr...@gm... > <mailto:chr...@gm...> > <mailto:chr...@gm... > <mailto:chr...@gm...>> > > > ** 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=/> > ------------------------------------------------------------------------ > > _______________________________________________ > Matplotlib-users mailing list > Mat...@li... > <mailto:Mat...@li...> > 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, chr...@gm... > <mailto:chr...@gm...> > > ** 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, chr...@gm... > <mailto:chr...@gm...> > > ** 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 |
From: \Jonathan H. http://JonathansCorner.com\ <jon...@po...> - 2008-08-01 18:02:22
|
User apache exists with home directory /var/www, which exists. On Fri, Aug 1, 2008 at 11:59 AM, Michael Droettboom <md...@st...> 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 <jon...@po... <mailto: >> jon...@po...>> 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 >> <md...@st... <mailto:md...@st...>> 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, >> chr...@gm... >> <mailto:chr...@gm...> >> <mailto:chr...@gm... >> <mailto:chr...@gm...>> >> >> >> ** 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=/> >> >> ------------------------------------------------------------------------ >> >> _______________________________________________ >> Matplotlib-users mailing list >> Mat...@li... >> <mailto:Mat...@li...> >> 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, chr...@gm... >> <mailto:chr...@gm...> >> >> ** 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, chr...@gm... <mailto: >> chr...@gm...> >> >> ** 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, chr...@gm... ** 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 |
From: Michael D. <md...@st...> - 2008-08-01 18:11:03
|
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 <md...@st... > <mailto:md...@st...>> 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 <jon...@po... > <mailto:jon...@po...> > <mailto:jon...@po... > <mailto:jon...@po...>>> 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 > <md...@st... <mailto:md...@st...> > <mailto:md...@st... <mailto:md...@st...>>> 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, > chr...@gm... > <mailto:chr...@gm...> > <mailto:chr...@gm... > <mailto:chr...@gm...>> > <mailto:chr...@gm... > <mailto:chr...@gm...> > <mailto:chr...@gm... > <mailto:chr...@gm...>>> > > > ** 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 > Mat...@li... > <mailto:Mat...@li...> > <mailto:Mat...@li... > <mailto:Mat...@li...>> > > > 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, > chr...@gm... > <mailto:chr...@gm...> > <mailto:chr...@gm... > <mailto:chr...@gm...>> > > ** 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, chr...@gm... > <mailto:chr...@gm...> > <mailto:chr...@gm... > <mailto:chr...@gm...>> > > ** 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, chr...@gm... > <mailto:chr...@gm...> > > ** 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 |
From: \Jonathan H. http://JonathansCorner.com\ <jon...@po...> - 2008-08-01 18:22:58
|
It looks like an apache that thinks it's root: os.system("whoami") print "<br>" print os.geteuid() print "<br>" print os.getuid() print "<br>" print os.path.expanduser("~") print "<br>" print os.getenv("HOME") print "<br>" print os.getenv("USERPROFILE") print "<br>" print os.getenv("USER") print "<br>" print os.getenv("TMP") print "<br>" produces: apache 81 81 /root /root None root None So I should adjust the system so a confused apache-owned process that thinks it's root will run? Or are there features to ask PHP to spawn subprocesses that know who they're running as? (or is that something beside the point of this list?) On Fri, Aug 1, 2008 at 1:09 PM, Michael Droettboom <md...@st...> wrote: > 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 <md...@st...<mailto: >> md...@st...>> 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 <jon...@po... >> <mailto:jon...@po...> >> <mailto:jon...@po... >> <mailto:jon...@po...>>> 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 >> <md...@st... <mailto:md...@st...> >> <mailto:md...@st... <mailto:md...@st...>>> 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, >> chr...@gm... >> <mailto:chr...@gm...> >> <mailto:chr...@gm... >> <mailto:chr...@gm...>> >> <mailto:chr...@gm... >> <mailto:chr...@gm...> >> <mailto:chr...@gm... >> <mailto:chr...@gm...>>> >> >> >> ** 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 >> Mat...@li... >> <mailto:Mat...@li...> >> <mailto:Mat...@li... >> <mailto:Mat...@li...>> >> >> >> 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, >> chr...@gm... >> <mailto:chr...@gm...> >> <mailto:chr...@gm... >> <mailto:chr...@gm...>> >> >> ** 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, chr...@gm... >> <mailto:chr...@gm...> >> <mailto:chr...@gm... >> <mailto:chr...@gm...>> >> >> ** 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, chr...@gm... <mailto: >> chr...@gm...> >> >> ** 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, chr...@gm... ** 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 |
From: Michael D. <md...@st...> - 2008-08-01 18:41:05
|
This is getting a bit outside of my knowledge area, but it does look like the environment variables are not being set up correctly when the Python process is run. This is probably a more general apache/mod_php sort of question, but it would be great to post the answer here so we can add a solution to the matplotlib FAQ. Cheers, Mike "Jonathan Hayward, http://JonathansCorner.com" wrote: > It looks like an apache that thinks it's root: > > os.system("whoami") > print "<br>" > print os.geteuid() > print "<br>" > print os.getuid() > print "<br>" > print os.path.expanduser("~") > print "<br>" > print os.getenv("HOME") > print "<br>" > print os.getenv("USERPROFILE") > print "<br>" > print os.getenv("USER") > print "<br>" > print os.getenv("TMP") > print "<br>" > > produces: > > apache > 81 > 81 > /root > /root > None > root > None > > So I should adjust the system so a confused apache-owned process that > thinks it's root will run? Or are there features to ask PHP to spawn > subprocesses that know who they're running as? (or is that something > beside the point of this list?) > > On Fri, Aug 1, 2008 at 1:09 PM, Michael Droettboom <md...@st... > <mailto:md...@st...>> wrote: > > 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 > <md...@st... <mailto:md...@st...> > <mailto:md...@st... <mailto:md...@st...>>> 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 <jon...@po... > <mailto:jon...@po...> > <mailto:jon...@po... > <mailto:jon...@po...>> > <mailto:jon...@po... > <mailto:jon...@po...> > <mailto:jon...@po... > <mailto:jon...@po...>>>> 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 > <md...@st... <mailto:md...@st...> > <mailto:md...@st... <mailto:md...@st...>> > <mailto:md...@st... <mailto:md...@st...> > <mailto:md...@st... <mailto:md...@st...>>>> 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, > chr...@gm... > <mailto:chr...@gm...> > <mailto:chr...@gm... > <mailto:chr...@gm...>> > <mailto:chr...@gm... > <mailto:chr...@gm...> > <mailto:chr...@gm... > <mailto:chr...@gm...>>> > <mailto:chr...@gm... > <mailto:chr...@gm...> > <mailto:chr...@gm... > <mailto:chr...@gm...>> > <mailto:chr...@gm... > <mailto:chr...@gm...> > <mailto:chr...@gm... > <mailto:chr...@gm...>>>> > > > ** 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=/>> > > <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 > Mat...@li... > <mailto:Mat...@li...> > <mailto:Mat...@li... > <mailto:Mat...@li...>> > > <mailto:Mat...@li... > <mailto:Mat...@li...> > <mailto:Mat...@li... > <mailto:Mat...@li...>>> > > > 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, > chr...@gm... > <mailto:chr...@gm...> > <mailto:chr...@gm... > <mailto:chr...@gm...>> > <mailto:chr...@gm... > <mailto:chr...@gm...> > <mailto:chr...@gm... > <mailto:chr...@gm...>>> > > ** 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, > chr...@gm... > <mailto:chr...@gm...> > <mailto:chr...@gm... > <mailto:chr...@gm...>> > <mailto:chr...@gm... > <mailto:chr...@gm...> > <mailto:chr...@gm... > <mailto:chr...@gm...>>> > > ** 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, chr...@gm... > <mailto:chr...@gm...> > <mailto:chr...@gm... > <mailto:chr...@gm...>> > > ** 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, chr...@gm... > <mailto:chr...@gm...> > > ** 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 |
From: Rodney H. <RH...@co...> - 2008-08-03 03:41:10
|
Jonathan, If you did not get a response by now, you can try the following. import os# set HOME environment variable to a directory the httpd server can write to os.environ[ 'HOME' ] = 'c:/www/app/tmp/' Good luck. -Rodney _____ From: mat...@li... [mailto:mat...@li...] On Behalf Of "Jonathan Hayward, http://JonathansCorner.com" Sent: Friday, August 01, 2008 11:26 AM To: Matplotlib Subject: [Matplotlib-users] Crash on import with CGI wrapped by PHP--unhappywith .matplotlib directory? 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, chr...@gm... ** 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 |