Thread: Error creating plpython3u extension

Error creating plpython3u extension

From
Bruce Harold
Date:

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

 

 

Re: Error creating plpython3u extension

From
Adrian Klaver
Date:
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


Re: Error creating plpython3u extension

From
Jeff Peck
Date:

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

RE: Error creating plpython3u extension

From
Bruce Harold
Date:
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
editedthe 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
deploymentisn'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&d=DwIC-g&c=n6-cguzQvX_tUIrZOS_4Og&r=nRgKzHukYnMuxsKJmL-jRA&m=A89phKNv5UT7bfmJVcGEJawoPPWKYHm4vDtVUer15Lk&s=d0WYDSstKd642xdAtngF9suS84SpG9PZibyLpTmPjUo&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


RE: Error creating plpython3u extension

From
Bruce Harold
Date:
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
editedthe 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
deploymentisn'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&d=DwIC-g&c=n6-cguzQvX_tUIrZOS_4Og&r=nRgKzHukYnMuxsKJmL-jRA&m=A89phKNv5UT7bfmJVcGEJawoPPWKYHm4vDtVUer15Lk&s=d0WYDSstKd642xdAtngF9suS84SpG9PZibyLpTmPjUo&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


Re: Error creating plpython3u extension

From
Adrian Klaver
Date:
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
Iedited 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
deploymentisn't a concern.
 
> 
> Bruce
> 



-- 
Adrian Klaver
adrian.klaver@aklaver.com