Error creating plpython3u extension

Started by Bruce Haroldalmost 8 years ago6 messagesgeneral
Jump to latest
#1Bruce Harold
bharold@esri.com

Hi

I have PostgreSQL 10 on Windows 10 and the EDB language pack X64 for Python 3.4 etc.

I edited the system environment variables:

PYTHONPATH = C:\edb\languagepack-10\x64\Python-3.4
Added C:\edb\LanguagePack-10\x64\Python-3.4\bin to PATH

Creating the extension plpython3u errors:

ERROR: could not load library "C:/Program Files/PostgreSQL/10/lib/plpython3.dll": The specified module could not be found

I have conda on the same machine with one Python 3.6 environment, I tried adding a Python 3.4 environment with conda but no luck there either.

Anyone have any experience enabling plpython3u in a conda environment?

Thanks

Bruce

#2Adrian Klaver
adrian.klaver@aklaver.com
In reply to: Bruce Harold (#1)
Re: Error creating plpython3u extension

On 05/08/2018 01:28 PM, Bruce Harold wrote:

Hi

I have PostgreSQL 10 on Windows 10 and the EDB language pack X64 for
Python 3.4 etc.

I edited the *system* environment variables:

According to this:

https://www.enterprisedb.com/docs/en/10.0/Language_Pack_v10/EDB_Postgres_Language_Pack_Guide.1.08.html

This:

PYTHONPATH = C:\edb\languagepack-10\x64\Python-3.4

should be:

set PYTHONHOME=C:\edb\languagepack-10\x64\Python-3.4

Added C:\edb\LanguagePack-10\x64\Python-3.4\bin to PATH

Creating the extension plpython3u errors:

ERROR: could not load library "C:/Program
Files/PostgreSQL/10/lib/plpython3.dll": The specified module could not
be found

I have conda on the same machine with one Python 3.6 environment, I
tried adding a Python 3.4 environment with conda but no luck there either.

Anyone have any experience enabling plpython3u in a conda environment?

Thanks

Bruce

--
Adrian Klaver
adrian.klaver@aklaver.com

#3Jeff Peck
peck.jeff@gmail.com
In reply to: Bruce Harold (#1)
Re: Error creating plpython3u extension

On 05/08/2018 03:28 PM, Bruce Harold wrote:

Hi

I have PostgreSQL 10 on Windows 10 and the EDB language pack X64 for
Python 3.4 etc.

I edited the *system* environment variables:

PYTHONPATH = C:\edb\languagepack-10\x64\Python-3.4

Added C:\edb\LanguagePack-10\x64\Python-3.4\bin to PATH

Creating the extension plpython3u errors:

ERROR: could not load library "C:/Program
Files/PostgreSQL/10/lib/plpython3.dll": The specified module could not
be found

I have conda on the same machine with one Python 3.6 environment, I
tried adding a Python 3.4 environment with conda but no luck there either.

Anyone have any experience enabling plpython3u in a conda environment?

Thanks

Bruce

Hey Bruce,
I suggest that you first check to see if the referenced file exists. If
yes, the next step is to go download a tool called Dependency Walker.
You will open that dll file in Dependency Walker, and it should tell you
if anything required is missing from your box. Most likely you just need
to install a specific Visual C++ Runtime Environment. If Dependency
Walker lists a DLL like MSVCRXXX.dll in the list, you should be able to
search for that and find the correct runtime environment pretty easily.

Good luck,
Jeff Peck

#4Bruce Harold
bharold@esri.com
In reply to: Adrian Klaver (#2)
RE: Error creating plpython3u extension

Thank you Adrian and Jeff.

I made some progress and can extend databases with plpython3u.

Re. the edb doc, "C:\edb\LanguagePack-10\x64\Python-3.4\bin" does not exist, stripping 'bin' off the path is required.

Setting PYTHONHOME for the system is unfriendly to the rest of my python dependencies, so to make this specific to pg I edited the pgAdmin 4 shortcut to set the variable there, the shortcut target becomes:

C:\Windows\System32\cmd.exe /c "SET PYTHONHOME=C:\edb\languagepack-10\x64\Python-3.4 && START pgAdmin4.exe"

The "Start in" property does not change, the executable is found.

Whether or not this works across the server I guess I'll find out shortly, I'm a newbie doing a proof of concept so deployment isn't a concern.

Bruce

-----Original Message-----
From: Adrian Klaver [mailto:adrian.klaver@aklaver.com]
Sent: Tuesday, May 8, 2018 3:38 PM
To: Bruce Harold <bharold@esri.com>; pgsql-general@lists.postgresql.org
Subject: Re: Error creating plpython3u extension

On 05/08/2018 01:28 PM, Bruce Harold wrote:

Hi

I have PostgreSQL 10 on Windows 10 and the EDB language pack X64 for
Python 3.4 etc.

I edited the *system* environment variables:

According to this:

https://urldefense.proofpoint.com/v2/url?u=https-3A__www.enterprisedb.com_docs_en_10.0_Language-5FPack-5Fv10_EDB-5FPostgres-5FLanguage-5FPack-5FGuide.1.08.html&amp;d=DwIC-g&amp;c=n6-cguzQvX_tUIrZOS_4Og&amp;r=nRgKzHukYnMuxsKJmL-jRA&amp;m=A89phKNv5UT7bfmJVcGEJawoPPWKYHm4vDtVUer15Lk&amp;s=d0WYDSstKd642xdAtngF9suS84SpG9PZibyLpTmPjUo&amp;e=

This:

PYTHONPATH = C:\edb\languagepack-10\x64\Python-3.4

should be:

set PYTHONHOME=C:\edb\languagepack-10\x64\Python-3.4

Added C:\edb\LanguagePack-10\x64\Python-3.4\bin to PATH

Creating the extension plpython3u errors:

ERROR: could not load library "C:/Program
Files/PostgreSQL/10/lib/plpython3.dll": The specified module could not
be found

I have conda on the same machine with one Python 3.6 environment, I
tried adding a Python 3.4 environment with conda but no luck there either.

Anyone have any experience enabling plpython3u in a conda environment?

Thanks

Bruce

--
Adrian Klaver
adrian.klaver@aklaver.com

#5Bruce Harold
bharold@esri.com
In reply to: Bruce Harold (#4)
RE: Error creating plpython3u extension

It seems my cheap hack doesn't work, the server connection breaks on CREATE FUNCTION unless PYTHONHOME is set for the system.

-----Original Message-----
From: Bruce Harold
Sent: Wednesday, May 9, 2018 9:46 AM
To: 'Adrian Klaver' <adrian.klaver@aklaver.com>; pgsql-general@lists.postgresql.org
Subject: RE: Error creating plpython3u extension

Thank you Adrian and Jeff.

I made some progress and can extend databases with plpython3u.

Re. the edb doc, "C:\edb\LanguagePack-10\x64\Python-3.4\bin" does not exist, stripping 'bin' off the path is required.

Setting PYTHONHOME for the system is unfriendly to the rest of my python dependencies, so to make this specific to pg I edited the pgAdmin 4 shortcut to set the variable there, the shortcut target becomes:

C:\Windows\System32\cmd.exe /c "SET PYTHONHOME=C:\edb\languagepack-10\x64\Python-3.4 && START pgAdmin4.exe"

The "Start in" property does not change, the executable is found.

Whether or not this works across the server I guess I'll find out shortly, I'm a newbie doing a proof of concept so deployment isn't a concern.

Bruce

-----Original Message-----
From: Adrian Klaver [mailto:adrian.klaver@aklaver.com]
Sent: Tuesday, May 8, 2018 3:38 PM
To: Bruce Harold <bharold@esri.com>; pgsql-general@lists.postgresql.org
Subject: Re: Error creating plpython3u extension

On 05/08/2018 01:28 PM, Bruce Harold wrote:

Hi

I have PostgreSQL 10 on Windows 10 and the EDB language pack X64 for
Python 3.4 etc.

I edited the *system* environment variables:

According to this:

https://urldefense.proofpoint.com/v2/url?u=https-3A__www.enterprisedb.com_docs_en_10.0_Language-5FPack-5Fv10_EDB-5FPostgres-5FLanguage-5FPack-5FGuide.1.08.html&amp;d=DwIC-g&amp;c=n6-cguzQvX_tUIrZOS_4Og&amp;r=nRgKzHukYnMuxsKJmL-jRA&amp;m=A89phKNv5UT7bfmJVcGEJawoPPWKYHm4vDtVUer15Lk&amp;s=d0WYDSstKd642xdAtngF9suS84SpG9PZibyLpTmPjUo&amp;e=

This:

PYTHONPATH = C:\edb\languagepack-10\x64\Python-3.4

should be:

set PYTHONHOME=C:\edb\languagepack-10\x64\Python-3.4

Added C:\edb\LanguagePack-10\x64\Python-3.4\bin to PATH

Creating the extension plpython3u errors:

ERROR: could not load library "C:/Program
Files/PostgreSQL/10/lib/plpython3.dll": The specified module could not
be found

I have conda on the same machine with one Python 3.6 environment, I
tried adding a Python 3.4 environment with conda but no luck there either.

Anyone have any experience enabling plpython3u in a conda environment?

Thanks

Bruce

--
Adrian Klaver
adrian.klaver@aklaver.com

#6Adrian Klaver
adrian.klaver@aklaver.com
In reply to: Bruce Harold (#5)
Re: Error creating plpython3u extension

On 05/09/2018 10:38 AM, Bruce Harold wrote:

It seems my cheap hack doesn't work, the server connection breaks on CREATE FUNCTION unless PYTHONHOME is set for the system.

Yeah, pretty sure the server is not looking at the environment that
pgAdmin4 is running in as that is not part of the core.

Not sure how to solve this. I don't run Windows enough anymore to offer
any suggestions. Maybe someone from EDB will chime in.

-----Original Message-----
From: Bruce Harold
Sent: Wednesday, May 9, 2018 9:46 AM
To: 'Adrian Klaver' <adrian.klaver@aklaver.com>; pgsql-general@lists.postgresql.org
Subject: RE: Error creating plpython3u extension

Thank you Adrian and Jeff.

I made some progress and can extend databases with plpython3u.

Re. the edb doc, "C:\edb\LanguagePack-10\x64\Python-3.4\bin" does not exist, stripping 'bin' off the path is required.

Setting PYTHONHOME for the system is unfriendly to the rest of my python dependencies, so to make this specific to pg I edited the pgAdmin 4 shortcut to set the variable there, the shortcut target becomes:

C:\Windows\System32\cmd.exe /c "SET PYTHONHOME=C:\edb\languagepack-10\x64\Python-3.4 && START pgAdmin4.exe"

The "Start in" property does not change, the executable is found.

Whether or not this works across the server I guess I'll find out shortly, I'm a newbie doing a proof of concept so deployment isn't a concern.

Bruce

--
Adrian Klaver
adrian.klaver@aklaver.com