python - How can I import submodules of pandas without importing matplotlib? -


i using pandas 0.14.1 on webserver process reports sql database.

i not need plotting facilities, matplotlib always imported.

how can import modules need following?

df = pd.io.sql.frame_query(query, con=conn) df['colname'].apply(somefunc) df.set_index('colname') print df.to_html()  

i having add following hack of report generating scripts:

import os os.environ['mplconfigdir'] = '/tmp/' 

before import pandas. can avoid this?

here's webserver error log when omit hack:

file "/var/www/scripts/myscript.py", line 46, in index\n    pandas.io import sql file "/usr/lib/python2.7/dist-packages/pandas/__init__.py", line 41, in <module>\n    pandas.core.api import * file "/usr/lib/python2.7/dist-packages/pandas/core/api.py", line 9, in <module>\n    pandas.core.groupby import grouper file "/usr/lib/python2.7/dist-packages/pandas/core/groupby.py", line 15, in <module>\n    pandas.core.frame import dataframe file "/usr/lib/python2.7/dist-packages/pandas/core/frame.py", line 38, in <module>\n    pandas.core.series import series file "/usr/lib/python2.7/dist-packages/pandas/core/series.py", line 2524, in <module>\n    import pandas.tools.plotting _gfx file "/usr/lib/python2.7/dist-packages/pandas/tools/plotting.py", line 26, in <module>\n    import pandas.tseries.converter conv file "/usr/lib/python2.7/dist-packages/pandas/tseries/converter.py", line 7, in <module>\n    import matplotlib.units units file "/usr/lib/pymodules/python2.7/matplotlib/__init__.py", line 774, in <module>\n    rcparams = rc_params() file "/usr/lib/pymodules/python2.7/matplotlib/__init__.py", line 692, in rc_params\n    fname = matplotlib_fname() file "/usr/lib/pymodules/python2.7/matplotlib/__init__.py", line 604, in matplotlib_fname\n    fname = os.path.join(get_configdir(), 'matplotlibrc') file "/usr/lib/pymodules/python2.7/matplotlib/__init__.py", line 253, in wrapper\n    ret = func(*args, **kwargs) file "/usr/lib/pymodules/python2.7/matplotlib/__init__.py", line 478, in _get_configdir\n    raise runtimeerror("failed create %s/.matplotlib; consider setting mplconfigdir writable directory matplotlib configuration data"%h) runtimeerror: failed create /var/www/.matplotlib; consider setting mplconfigdir writable directory matplotlib configuration data 

further detail: platform ubuntu 12.04lts has old version of matplotlib. recent versions fix error creating temp file. still sucks matplotlib running in webserver when don't need it.

unfortunately answer upgrade matplotlib version creates writable configuration directory on startup if default locations not available. pain if you're using linux distribution packages (matplotlib v1.1.1) versions after 1.3.1 should fine.

both suggestions in comments not fix problem.

changing mpl config use different display driver agg not stop matplotlib trying create config directory.

adding empty matplotlib.py file breaks pandas because requires matplotlib.units module datatype conversion.

so avoid until upgrading matplotlib, os.environ['mplconfigdir'] = '/tmp/' hack works fine, have remember put in every file uses pandas on our webserver. (or create our own custom module hides of this)


Comments

Popular posts from this blog

java - Oracle EBS .ClassNotFoundException: oracle.apps.fnd.formsClient.FormsLauncher.class ERROR -

c# - how to use buttonedit in devexpress gridcontrol -

nvd3.js - angularjs-nvd3-directives setting color in legend as well as in chart elements -