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

Docker上的PostgreSQL:如何在“plpython3u”下安装和运行python依赖项?

陶博耘
2023-03-14

使用Dockerfile我可以完美地运行plpython3u

FROM postgres:11.3

RUN apt-get update && apt-get install -y postgresql-plpython3-11
CREATE OR REPLACE FUNCTION return_version()
  RETURNS VARCHAR
AS $$
    import sys
    return sys.version
$$ LANGUAGE plpython3u;

3.5.3(默认,2020年7月9日13:00:10)[GCC 6.3.0 20170516]`

但我不能使用依赖项,例如请求

[38000] ERROR: ImportError: No module named 'requests' 
Where: Traceback (most recent call last): PL/Python function "return_version", line 3, 
in <module> import requests PL/Python function "return_version"

第一次尝试执行呼叫

CREATE OR REPLACE FUNCTION return_pip()
RETURNS VARCHAR AS $$
from subprocess import call
return call(["pip", "install", "requests"])
$$ LANGUAGE plpython3u STABLE ;

没有希望

[38000] ERROR: FileNotFoundError: [Errno 2] No such file or directory: 'pip' Where: Traceback (most recent call last): PL/Python function "return_ls", line 3, in <module> return call(["pip", "install", "requuest"]) PL/Python function "return_ls", line 246, in c ...

第二次尝试

CREATE OR REPLACE FUNCTION return_version()
  RETURNS VARCHAR
AS $$
    import sys
    from subprocess import call
    return call(["pip3", "install", "requests"])

    import requests
    res = requests.get('https://google.com')
    print(res.text)
    return res.text
$$ LANGUAGE plpython3u;

得到错误

SELECT return_version()
[2020-09-29 10:59:44] [38000] ERROR: FileNotFoundError: [Errno 2] No such file or directory: 'pip3'
[2020-09-29 10:59:44] Where: Traceback (most recent call last):
[2020-09-29 10:59:44] PL/Python function "return_version", line 4, in <module>
[2020-09-29 10:59:44] return call(["pip3", "install", "requests"])
[2020-09-29 10:59:44] PL/Python function "return_version", line 246, in call
[2020-09-29 10:59:44] PL/Python function "return_version", line 675, in __init__
[2020-09-29 10:59:44] PL/Python function "return_version", line 1281, in _execute_child
[2020-09-29 10:59:44] PL/Python function "return_version"

我遇到一个相似的人问同样的问题,但没有回答

问题:
如何在plpython3u下安装和运行python依赖项?

共有1个答案

程昕
2023-03-14

感谢@AdrianKlaver的回答

跟着这个。我可以得到响应

  1. I pick this answer to be my image
  2. Execute CREATE EXTENSION plpython3u; in SQL shell
  3. Run pip3 install requests In OS(aka container)
  4. create function
    CREATE OR REPLACE FUNCTION return_version()
       RETURNS VARCHAR
    AS $$
     import requests
     res = requests.get('https://google.com')
     return str(res.text)
    $$ LANGUAGE plpython3u;
    

 类似资料:
  • 我正在尝试在postgresql中使用python语言。大概是这样的: 但当我运行此命令时,会出现以下错误: 然后,我尝试通过执行以下命令来创建python语言的扩展: 这告诉我以下错误: 我检查了文件在那里。然后我阅读了一些关于修改postgresql文件的内容,方法是从源代码中编译postgres并使用python添加

  • 我试图抓住"模块未找到"的想法时导入一个Python包在plpython3u过程中,我不知道如何使用接受的答案,使它在Linux上运行。通常情况下,这里应该是重复的,但是如果在使用的路径上与MacOS有差异,那么对于一个新问题来说可能是好的。 我在WSL2上(Ubuntu 20.04)。我安装了来自Ubuntu PostgreSQL Apt存储库的官方PostgreSQL下载页面的命令。 这给了我

  • 我正在尝试安装一个没有依赖项的python模块。 我跑: 但是这个安装依赖项,任何想法怎么能做到这一点?

  • 我想在python 3.7.4做: 得到这个错误: 我已经试过了: 使用和 使用本地windows和windows服务器 多次重新安装不同版本的软件包(例如和) Traceback(最近一次调用最后一次):文件"c:/用户/管理员/文档/GitHub/合同-标准-标识符-on-aws/schnelltest.py",第1行,在导入gensim文件"C:\用户\管理员\AppData\本地\程序\P

  • 问题内容: 我正在创建 setup.py 来分发我的应用程序。该应用程序具有许多可通过pip安装的依赖项,还具有一些无法从PyPI安装的自定义依赖项。 因此,我创建了一个将包含在发行版中的,并且必须在 setup.py 从安装了所有内容之后作为依赖项进行安装。 想象以下应用程序结构: 我怎么做? 问题答案: 可能但不确定应使用哪个setuptools版本。脚步: 在setup.py中 重要的是您的