python venv 可以与 plpython3u for postgresql 一起使用吗?



我希望plpython3u使用python的虚拟环境。我在PostgreSQL PL/Python上看到了一些关于virtualenv的(旧的和不是特别清楚的(指令:在virtualenv中调用存储过程。但是我还没有看到任何关于python venv的东西。这能做到吗,如果可以,怎么能做到?谢谢。

覆 铜板。

如果你只需要一个 PL/Python 的venv环境,你可以简单地修改 PostggreSQL 单元文件中的ExecStart来加载venvactivate脚本。

以下摘自PGDG YUM安装的PostgreSQL 14 systemd单元文件(Myvenvls位于/var/lib/pgsql/plpython/(。

ExecStartPre=/usr/pgsql-14/bin/postgresql-14-check-db-dir ${PGDATA}
#ExecStart=/usr/pgsql-14/bin/postmaster -D ${PGDATA}
ExecStart=/bin/bash -c "source /var/lib/pgsql/plpython/bin/activate && /usr/pgsql-14/bin/postmaster -D ${PGDATA}"

请注意,您需要将单元文件postgresql-14.service/usr/lib/systemd/system/复制到/etc/systemd/system/并执行systemctl daemon-reload才能生效。

然后,您可以使用PL/Python匿名块中的pkg_resources模块检查venv(我在venv环境中安装了pyyaml(。

postgres=# CREATE EXTENSION plpython3u ;
CREATE EXTENSION
postgres=# DO $$
import pkg_resources
installed_packages = pkg_resources.working_set
installed_packages_list = sorted(["%s==%s" % (i.key, i.version)
for i in installed_packages])
plpy.notice(installed_packages_list)
$$ LANGUAGE plpython3u;
NOTICE:  ['pip==9.0.3', 'pyyaml==5.4.1', 'setuptools==39.2.0']
DO
postgres=# 

最新更新