Hi all, I've run into an aspect of matplotlib's setup that seems awkward. I'm seeing this on Ubuntu, but I imagine it would happen on any *nix platform.
If python is running under sudo the first time matplotlib is imported, then matplotlib creates its config dir (~/.matplotlib) with root as the owner. Subsequent attempts to import matplotlib while running python as a non-privileged user result in this: ----------------------------------------------------------------- RuntimeError: '/home/philip' is not a writable dir; you must set /home/philip/.matplotlib to be a writable dir. You can also set environment variable MPLCONFIGDIR to any writable directory where you want matplotlib data stored ----------------------------------------------------------------- A simple way to re-create this -- 1. Delete or rename ~/.matplotlib 2. sudo python -c "import matplotlib" 3. python -c "import matplotlib" This not-improbable real-world scenario would create ~/.matplotlib owned by root -- 1) Download app FooBar that has matplotlib as a dependency 2) Install matplotlib 3) Run FooBar's setup.py as sudo. It imports matplotlib, perhaps just to ensure that matplotlib is installed and working. We ran into a similar situation with our app ('sudo python setup.py install' created desktop icons owned by root) and we resolved it by invoking chown after using a getenv() call to sniff out who we really wanted to own the file. It looks like the diff below (untested!) applied to lib/matplotlib/__init__.py would prevent this from happening. Does it seems reasonable to add it? 474a475,485 > if not sys.platform.lower().startswith("win"): > # Ensure that we didn't just create a root-owned directory in the > # user's HOME directory. That happens if this is being run under > # sudo. If the SUDO_USER env. var (which contains the user that > # invoked sudo) then we're running under sudo. If it doesn't > # exist, we're not running under sudo. > current_user = os.getenv("SUDO_USER") > if current_user: > subprocess.call(["chown", "-R", current_user, p]) Thanks Philip ------------------------------------------------------------------------------ The Next 800 Companies to Lead America's Growth: New Video Whitepaper David G. Thomson, author of the best-selling book "Blueprint to a Billion" shares his insights and actions to help propel your business during the next growth cycle. Listen Now! http://p.sf.net/sfu/SAP-dev2dev _______________________________________________ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users