[英]PostgreSQL on Docker: How to install and run python dependencies under `plpython3u`?
With Dockerfile
I can run plpython3u
perfectly随着
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 (default, Jul 9 2020, 13:00:10) [GCC 6.3.0 20170516]`
3.5.3(默认,2020 年 7 月 9 日,13:00:10)[GCC 6.3.0 20170516]`
But I can't use dependencies for example requests
但是我不能将依赖项用于示例
requests
[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"
1st Attempt to do a call
第一次尝试
call
CREATE OR REPLACE FUNCTION return_pip()
RETURNS VARCHAR AS $$
from subprocess import call
return call(["pip", "install", "requests"])
$$ LANGUAGE plpython3u STABLE ;
No hope没有希望
[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 ...
2nd Attempt第二次尝试
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;
Got error有错误
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"
I got similar person asking same question, but no answer我有类似的人问同样的问题,但没有答案
Question:题:
How to install and run python dependencies under plpython3u
?如何在
plpython3u
下安装和运行 python 依赖项?
Thanks to @AdrianKlaver for his answer感谢@AdrianKlaver 的回答
Follow this.按照这个。 I can get the
response
我可以得到
response
CREATE EXTENSION plpython3u;
CREATE EXTENSION plpython3u;
in SQL shellpip3 install requests
In OS(aka container)pip3 install requests
CREATE OR REPLACE FUNCTION return_version() RETURNS VARCHAR AS $$ import requests res = requests.get('https://google.com') return str(res.text) $$ LANGUAGE plpython3u;
SELECT return_version();
Check the result
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.