Sto usando pandas 0.14.1 su un server web per elaborare report da un database SQL.Come posso importare sottomoduli di panda senza importare matplotlib?
Non ho bisogno di alcun impianto di stampa, ma matplotlib è sempre importato.
Come posso importare solo i moduli di cui ho bisogno per fare quanto segue?
df = pd.io.sql.frame_query(query, con=conn)
df['colname'].apply(somefunc)
df.set_index('colname')
print df.to_html()
sono costantemente dover aggiungere il seguente trucco per tutto il mio rapporto di generazione di script:
import os
os.environ['MPLCONFIGDIR'] = '/tmp/'
Prima di importare i panda. Cosa posso fare per evitarlo?
Ecco il mio webserver log degli errori quando Tralascio questo hack:
File "/var/www/scripts/myscript.py", line 46, in index\n from pandas.io import sql
File "/usr/lib/python2.7/dist-packages/pandas/__init__.py", line 41, in <module>\n from pandas.core.api import *
File "/usr/lib/python2.7/dist-packages/pandas/core/api.py", line 9, in <module>\n from pandas.core.groupby import Grouper
File "/usr/lib/python2.7/dist-packages/pandas/core/groupby.py", line 15, in <module>\n from pandas.core.frame import DataFrame
File "/usr/lib/python2.7/dist-packages/pandas/core/frame.py", line 38, in <module>\n from 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 as _gfx
File "/usr/lib/python2.7/dist-packages/pandas/tools/plotting.py", line 26, in <module>\n import pandas.tseries.converter as conv
File "/usr/lib/python2.7/dist-packages/pandas/tseries/converter.py", line 7, in <module>\n import matplotlib.units as 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 to create %s/.matplotlib; consider setting MPLCONFIGDIR to a writable directory for matplotlib configuration data"%h)
RuntimeError: Failed to create /var/www/.matplotlib; consider setting MPLCONFIGDIR to a writable directory for matplotlib configuration data
Ulteriori dettagli: Platform è Ubuntu 12.04LTS che ha una versione abbastanza vecchia di matplotlib. Recent versions fix this error by creating a temp file. Comunque fa ancora schifo che matplotlib sia in esecuzione nel mio webserver quando non ne ho bisogno.
hai provato a importare solo ciò di cui hai bisogno. per esempio. 'da pandas.io import sql'? (invece di 'import pandas come pd') – hitzg
@hitzg si, continua a importare matplotlib tramite' import pandas.core.common come comm' che poi importa tutti i panda di importazione dei panda come pd' – Sekenre
Hack idea: cosa succede se aggiungi un 'matplotlib.py' vuoto alla tua directory di script? Questo dovrebbe ombreggiare il sistema 'matplotlib'. – DSM