2014-06-14 14 views
5

Ho provato ad installare la lingua v2.x PL/Python all'interno PostgreSQL sul mio database di eseguire la query:Come installare PL/Python su PostgreSQL 9.3 x64 Windows 7?

CREATE EXTENSION plpythonu; 

(ho ricevuto questo da http://www.postgresql.org/docs/9.3/static/plpython.html)

Ma sto ottenendo questo errore:

ERRO: não pôde acessar arquivo "$libdir/plpython2": No such file or directory 
********** Error ********** 
ERRO: não pôde acessar arquivo "$libdir/plpython2": No such file or directory 
SQL state: 58P01 

Come installare questo in modo automatico? Devo installarlo su molti computer.

+0

basta vedere [questo] (http: // stackoverflow.it/a/21641465/3682599) –

+0

Ho bisogno di Python versione 2.x:/ Sto lavorando con NLTK. –

risposta

7

In genere questo messaggio di errore è fuorviante emesso dalla chiamata API Windows LoadLibrary. Che cosa significa in realtà è più vicino a:

Error when loading plpython2.dll : Cannot find dependency DLL python27.dll on PATH

ma invece di Windows si comporta proprio come è plpython2.dll sua auto che non poteva essere caricato.

È possibile sapere se questo è il problema controllando la directory lib dell'installazione PostgreSQL per un plpython2.dll. Se è lì, ma ottieni questo errore, allora è un runtime Python mancante. Se non è presente lo plpython2.dll, quindi your PostgreSQL install is missing plpython2, something I'm raising with the packaging team.

Se si dispone di plpython2.dll ma non viene caricato, è necessario installare il runtime di Python che corrisponde alla versione di PostgreSQL. Deve essere la stessa versione principale di Python utilizzata per compilare PostgreSQL, ad es. se Python 2.7 è stato usato per compilare PostgreSQL, Python 2.6 non funzionerà per eseguire plpython.

Sarebbe bello se l'installazione del runtime richiesto fosse automatizzata tramite l'installer, ma al momento non lo è. It's also not properly documented, which I'll take up with the packaging team Il runtime corretto da installare è ora documentato in doc\installation-notes.html all'interno della directory di installazione, a cui è possibile accedere tramite PostgresSQL 9.3 -> Documentazione -> Note di installazione nel menu Start.

Per le vecchie versioni che mancano di queste informazioni nel loro file "note di installazione", se non si è sicuri di quale versione di Python è richiesta, è possibile utilizzare depends.exe (dependency walker) per vedere quale DLL Python è collegata. Hai bisogno della stessa architettura di Python - se stai installando PostgreSQL a 64 bit hai bisogno di Python 64 bit, ecc.

I pacchetti PostgreSQL 9.3 richiedono Python 27. Quindi vai a scaricare Python 2.7 da http://python.org/ (non ActiveState, non sono necessariamente compatibili). Assicurati che Python sia aggiunto a PATH dal programma di installazione (è un'opzione quando esegui il programma di installazione). Quindi riprovare dopo aver riavviato PostgreSQL.

È possibile automatizzare l'installazione di Python con:

start /wait msiexec /i python-2.7.3.amd64.msi /qb /passive TARGETDIR=%SystemDrive%\Python27_x64 ALLUSERS=1 

dove python-2.7.3.amd64.msi è il nome del file binario Python è stato installato, e si sta installando la versione a 64 bit di C:\Python27_x64. Regolare come desiderato.

+0

_ "se Python 2.7 è stato usato per compilare PostgreSQL, Python 2.6 non funzionerà per eseguire plpython." _? –

+0

@BurhanKhalid Hanno nomi DLL diversi (sonames). 'plpython2.dll' sarà collegato a' python27.dll' e non troverà 'python26.dll' se è presente. Anche se lo fosse, Python non è compatibile con ABI tra le principali versioni. Apri 'plpython2.dll' con' depends.exe' per vedere cosa intendo. –

+0

Penso che volevi dire "Se Python 2.7 è stato usato per compilare plpython", no? –

0

Nel mio caso ha funzionato solo installando Python 3.3. Precedentemente avevo 2.7 e 3.4, ma non era quello che volevano.

Ho PostgreSQL 9.4 x64 in esecuzione su Windows 7