当前位置: 首页 > 知识库问答 >
问题:

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

笪智志
2023-03-14

我希望plpython3u为python使用虚拟环境。我已经在PostgreSQL PL/Python上看到了一些关于virtualenv的(旧的且不是特别清楚的)说明:virtualenv中的调用存储过程。但是,我还没有看到python venv的任何内容。能否做到这一点?如果可以,如何做到?谢谢

CCl。

共有1个答案

封鸿雪
2023-03-14

如果PL/Python只需要一个venv环境,那么只需修改PostggreSQL单元文件中的ExecStart即可加载venv激活脚本。

以下摘录自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。服务/usr/lib/systemd/system//etc/systemd/system/并执行systemctl后台程序重新加载以生效。

然后,您可以使用PL/Python匿名块中的pkg_资源模块检查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=# 

 类似资料:
  • 问题内容: 我想在我的node.js脚本中使用phantomjs。有一个phantomjs- node 库。.但是不幸的是,作者使用了这个奇怪的coffee脚本代码来解释他在做什么: 现在,如果我直接将phantomjs与javascript一起使用,它将看起来像这样: 所以基本上我想用普通的javascript编写上面代码的第一段代码(通过阅读coffee脚本文档 ..这就是我所做的: 不幸的是

  • 问题内容: 是否可以使用Node.js在服务器端使用jQuery选择器/ DOM操作? 问题答案: 似乎有一个重大更新,导致原来的答案不再起作用。我找到了这个答案,解释了现在如何使用。我已经在下面复制了相关代码。 注意:原始答案没有提及你还需要使用安装

  • 我需要一些目前在JavaFX中找不到的功能。比如机器人或托盘图标。 我知道这些工具确实适用于JavaFx应用程序。但是可以使用它们吗?有什么需要我考虑的吗?

  • 在我的Eclipse RCP视图中,我使用JFace数据绑定将模型数据绑定到。我使用绑定数据,如代码片段所示,它工作得很好。 现在我真的想在节点上显示一个图像和文本。如果没有数据绑定,我只需要重写的方法,但是content+label provider方法和不能协同工作。我还没有在API中找到问题的解决方案。是否有一个解决方案,也许使用s?

  • 问题内容: 默认情况下,Hibernate 5不支持PostgreSQL 数据类型。 有什么方法可以实现对Hibernate + Spring JPA的支持? 如果有办法,与Hibernate一起使用的利弊是什么? 问题答案: 感谢Vlad Mihalcea我们有这样的机会!) 他创建了hibernate类型的 lib: 这为Hibernate添加了对’json’,’jsonb’和其他类型的支持:

  • 问题内容: 我收到错误消息“无法加载驱动程序” 问题答案: 尝试这个: 通过删除“;”在php.ini中取消注释以下内容: 使用以下代码连接到PostgreSQL数据库服务器: