2024-05-16 11:20:35 发布
网友
我希望plpython3u为python使用虚拟环境。我在PostgreSQL PL/Python: call stored procedure in virtualenv上看到了一些关于virtualenv的(旧的,不是特别清楚的)说明。但是,我还没有看到python venv的任何内容。能否做到这一点?如果可以,如何做到?谢谢
CCl
如果PL/Python只需要一个venv环境,那么只需修改PostggreSQL单元文件中的ExecStart即可加载venv{}脚本
venv
ExecStart
下面摘自PostgreSQL 14 systemd unit file of PGDG YUM installation(我的venvls位于/var/lib/pgsql/plpython/)
/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才能生效
postgresql-14.service
/usr/lib/systemd/system/
/etc/systemd/system/
systemctl daemon-reload
然后,您可以在PL/Python匿名块中check ^{} with the ^{} module(我在我的venv环境中安装pyyaml)
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=#
如果PL/Python只需要一个}脚本
venv
环境,那么只需修改PostggreSQL单元文件中的ExecStart
即可加载venv
{下面摘自PostgreSQL 14 systemd unit file of PGDG YUM installation(我的
venv
ls位于/var/lib/pgsql/plpython/
)请注意,您需要将单元文件
postgresql-14.service
从/usr/lib/systemd/system/
复制到/etc/systemd/system/
并执行systemctl daemon-reload
才能生效然后,您可以在PL/Python匿名块中check ^{} with the ^{} module (我在我的
venv
环境中安装pyyaml
)相关问题 更多 >
编程相关推荐