I've got Anaconda installed on a Ubuntu and would like to use some of it's modules in PL/Python. However, every time I call scipy, it errors with ImportError: No module named scipy.stats.
How do I get the Anaconda to work with PL/Python?
UPDATED: Below is the code & the error
CREATE OR REPLACE FUNCTION hdi_bars( numerator integer, denominator integer) RETURNS SETOF double precision[] AS $BODY$
from scipy.stats import beta import numpy as np from scipy.stats import beta import numpy as np
$BODY$ LANGUAGE plpythonu VOLATILE COST 100 ROWS 1000; ALTER FUNCTION hdi_bars(integer, integer) OWNER TO postgres;
ERROR: ERROR: ImportError: No module named scipy.stats CONTEXT: Traceback (most recent call last): PL/Python function "hdi_bars", line 5, in from scipy.stats import beta PL/Python function "hdi_bars"
********** Error **********
ERROR: ImportError: No module named scipy.stats SQL state: XX000 Context: Traceback (most recent call last): PL/Python function "hdi_bars", line 5, in from scipy.stats import beta PL/Python function "hdi_bars"
Based on the Postgres installation/configuration docs, there is an environment variable PYTHON
which can be set to the full path of the executable for Python that you want. Otherwise, the default --with-python
behavior will look for the system Python, most likely at /usr/bin/python
or similar standard location for other operating systems.
This question and answer seems to confirm that to alter it, you need to rebuild Postgres from source.