AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 37292
Accepted
Stephane Rolland
Stephane Rolland
Asked: 2013-03-22 14:00:33 +0800 CST2013-03-22 14:00:33 +0800 CST 2013-03-22 14:00:33 +0800 CST

Não foi possível abrir o arquivo de controle de extensão plpython3u.control: Não existe esse arquivo ou diretório

  • 772

Eu quero ter python3 em meu banco de dados postgresql para escrever procedimentos armazenados.

Estando no psqlcliente, quando digito o comando create extension plpython3urecebo o erro:

couldn't open extension control file /usr/share/postgresql/9.1/extension/plpython3u.control : No such file or directory

Eu verifiquei, há plpythonu.control e plpython2u.control no diretório, mas não o da versão 3.

No entanto, instalei os pacotes python3e python3-postgresql(entre outros) do depot. Estou usando o Ubuntu 12.04, kernel 3.2.0.38, com o postgresql 9.1 instalado.

O que devo instalar (ou fazer) para ter o arquivo plpython3u.control em minha máquina e ter python3 disponível em meu banco de dados?

postgresql postgresql-9.1
  • 2 2 respostas
  • 6989 Views

2 respostas

  • Voted
  1. Best Answer
    Daniel Vérité
    2013-03-22T16:05:42+08:002013-03-22T16:05:42+08:00

    O pacote a ser instalado é postgresql-plpython3.

    Por meio de dependências, isso instalará postgresql-plpython3-9.1, que fornece esses arquivos:

    $ dpkg -L postgresql-plpython3-9.1
    /.
    /usr
    /usr/share
    /usr/share/doc
    /usr/share/doc/postgresql-plpython3-9.1
    /usr/share/doc/postgresql-plpython3-9.1/copyright
    /usr/share/postgresql
    /usr/share/postgresql/9.1
    /usr/share/postgresql/9.1/extension
    /usr/share/postgresql/9.1/extension/plpython3u--1.0.sql
    /usr/share/postgresql/9.1/extension/plpython3u.control
    /usr/share/postgresql/9.1/extension/plpython3u--unpackaged--1.0.sql
    /usr/lib
    /usr/lib/postgresql
    /usr/lib/postgresql/9.1
    /usr/lib/postgresql/9.1/lib
    /usr/lib/postgresql/9.1/lib/plpython3.so
    /usr/share/doc/postgresql-plpython3-9.1/changelog.Debian.gz
    

    e então você pode fazer:

    postgres=# create extension plpython3u;
    CREATE EXTENSION
    
    • 8
  2. questionto42standswithUkraine
    2021-06-27T03:49:23+08:002021-06-27T03:49:23+08:00

    Verifique a ortografia

    Você recebe esta mensagem sempre que cria uma extensão que não está disponível. Eu tive o mesmo erro ao executar o CREATE EXTENSION plpython3ucom um erro de ortografia.

    Verifique a versão correta do Python

    Outra ideia é que você precisa da versão correta do Python. A versão correta difere entre Windows e Linux. Normalmente, você não deve instalar a versão exata, mas sim usar instaladores (Windows: EDB e Stack Builder --> Language pack, Linux: Follow PostgreSQL: how to install plpythonu extension .

    janelas

    No caso de usar um instalador do Windows, você precisa instalar a versão correta do Python que se adapta à sua versão do PostgreSQL e também definir as variáveis ​​PATH do Python (pelo menos, isso também é necessário no Windows, embora isso deva ser feito automaticamente com o Python instalação de qualquer maneira).


    No Windows, procure C:\Program Files\PostgreSQL\13\doc\installation-notes.htmla versão necessária do Python a ser instalada para a versão instalada do PostgreSQL. No meu caso, com o PostgreSQL 13:

    PostgreSQL 13

    Notas de instalação

    Bem-vindo ao assistente de instalação do PostgreSQL 13.

    Linguagens processuais

    As linguagens procedurais pl/Perl, pl/Python e pl/Tcl estão incluídas nesta distribuição do PostgreSQL. O servidor foi construído usando as distribuições da comunidade LanguagePack desses intérpretes de idioma. Para usar qualquer uma dessas linguagens no PostgreSQL, baixe e instale os interpretadores apropriados e assegure-se de que eles estejam incluídos na variável PATH sob a qual o servidor de banco de dados será iniciado. As versões usadas são mostradas abaixo - versões secundárias (correções de bugs) mais recentes também podem funcionar, mas não foram testadas:

    Perl 5.26
    Python 3.7
    Tcl 8.6
    

    insira a descrição da imagem aqui

    Portanto, o Python 3.7 é necessário no Windows.

    Tirei isso de uma visão geral da instalação do Windows PostgreSQL + plpython3u em Stack Overflow PostgreSQL 13 + Python 3.7.9 + plpython3u: 'psql: server closed the connection unexpectedly.' + 'O aplicativo perdeu a conexão com o banco de dados.' .

    Linux

    No Linux, não consegui encontrar esse installation-notes.htmlarquivo com a versão necessária do Python, como você encontra no Windows.

    Verificando a versão do Python diretamente como um procedimento armazenado no PostgreSQL com o plpython3u já instalado:

    CREATE OR REPLACE FUNCTION return_version()
      RETURNS VARCHAR
    AS $$
        import sys
        return sys.version
    $$ LANGUAGE plpython3u;
    

    Resultado:

    CREATE FUNCTION
    

    Teste:

    postgres=# SELECT return_version();
                  return_version
    ------------------------------------------
     3.8.10 (default, Jun  2 2021, 10:49:15) +
     [GCC 9.4.0]
    (1 row)
    

    mostra que para "PostgreSQL 13", "Python 3.8.10" é instalado. O instalador do Linux parece receber mais atenção do que o instalador do Windows e, portanto, pode ter uma versão mais recente do Python.

    Assim, em 9/2021, você precisa ter o Python instalado 3.8.10para fazer essa extensão funcionar. Ele deve ser instalado automaticamente pelo instalador do linux, mas você pode pelo menos verificar com isso se está no caminho certo, você deve encontrá-lo com:

    whereis python3.8
    

    Resultado:

    python3: /usr/bin/python3.8 /usr/bin/python3 /usr/bin/python3.8-config /usr/lib/python3.8 /usr/lib/python3.9 /usr/lib/python3 /etc/python3.8 /etc/python3 /usr/local/lib/python3.8 /usr/include/python3.8 /usr/share/python3
    
    • 0

relate perguntas

  • Posso ativar o PITR depois que o banco de dados foi usado

  • Práticas recomendadas para executar a replicação atrasada do deslocamento de tempo

  • Os procedimentos armazenados impedem a injeção de SQL?

  • Sequências Biológicas do UniProt no PostgreSQL

  • Qual é a diferença entre a replicação do PostgreSQL 9.0 e o Slony-I?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Conceder acesso a todas as tabelas para um usuário

    • 5 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    pedrosanta Listar os privilégios do banco de dados usando o psql 2011-08-04 11:01:21 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve