Python devient de plus en plus un outil d'analyse de données avec la sortie de packages d'analyse tels que chainer et tensorflow. Cela attire l'attention. Il existe une fonction appelée "PL / Python" qui peut utiliser un tel Python comme langage d'implémentation de fonction de PostgreSQL.
Par défaut, PL / Python utilisera le système Python. Par contre, si vous ne voulez pas polluer le Python du système, il semble que vous puissiez séparer l'environnement Python avec pyenv et mettre le package d'analyse.
Par conséquent, j'ai étudié comment utiliser Python installé par pyenv pour l'environnement d'exécution PL / Python.
PL / Python fait référence à libpython ~~ .so
.
Puisque la bibliothèque partagée n'est pas installée par l'installation normale de pyenv
Procédez comme suit:
CONFIGURE_OPTS="--enable-shared" pyenv install 2.7.10
C'est OK du côté pyenv
PostgreSQL compile à partir des sources.
https://github.com/postgres/postgres
De là, je pense que vous pouvez faire git clone
.
Ensuite, avec configure
, procédez comme suit.
./configure --prefix=/home/user/pgsql/pgsql9_5 --with-python=yes PYTHON=/home/user/.pyenv/versions/2.7.10/bin/python
Vous pouvez ou non ajouter «--prefix».
L'important est
--with-python=yes
Quand
PYTHON=/home/user/.pyenv/versions/2.7.10/bin/python
Si vous n'ajoutez pas --with-python = yes
, PL / Python ne sera pas compilé en premier lieu.
PYTHON = / home / user / .pyenv / versions / 2.7.10 / bin / python
a été installé avec pyenv
Spécifie l'emplacement du binaire Python.
Ensuite, PL / Python sera compilé pour utiliser Python de pyenv.
Lorsque vous exécutez configure
, la description suivante sera écrite dans leMakefile.global
généré.
python_includespec = -I/home/user/.pyenv/versions/2.7.10/include/python2.7
python_libdir = /home/user/.pyenv/versions/2.7.10/lib
python_libspec = -L/home/user/.pyenv/versions/2.7.10/lib -lpython2.7
Après cela, si vous make; make install
PostgreSQL, l'environnement d'exécution de PL / Python sera Python installé par pyenv.
J'ai compilé tout PostgreSQL, mais dois-je compiler uniquement PL / Python?