Error during: CREATE EXTENSION plpython3u; on PostgreSQL 9.6.0 Error during: CREATE EXTENSION plpython3u; on PostgreSQL 9.6.0 postgresql postgresql

Error during: CREATE EXTENSION plpython3u; on PostgreSQL 9.6.0


Copy the python34.dll file to c:\windows\system32 and name the copy python33.dll

The create language plpython3u should then work without a problem.


Exactly the same situation I faced with Postgres 9.6 Windows 10.PL/Python3U would not get through.

Worked around it:

Installed Python34 64bit Windows 10 version.Copied Python34.dll to c:\windows\system32 as Python33.dll and it worked.


The information is in Makefile of source installation package

We need libpython as a shared library. In Python >=2.5, configure asks Python directly. But because this has been broken in Debian for a long time (http://bugs.debian.org/695979), and to support older Python versions, we see if there is a file that is named like a shared library as a fallback.

for python windows:

ifeq ($(PORTNAME), win32)    pytverstr=$(subst .,,${python_version})    PYTHONDLL=$(subst \,/,$(WINDIR))/system32/python${pytverstr}.dll

So the write answer is:

  • WINDIR is : C:\Windows
  • pytverstr is use in makefile has a parameter to define version of python
  • PYTHONDLL is the location of dll

To check version of my installation, I open plpython3.dll located in C:\Program Files\PostgreSQL\9.4\lib (change path with your environnement)

With Notepad++ and search PyUnicode_AsUTF8Stringthe python dll version is visible in last word (in my case python33.dll)

check your installation to choice the good installer of python

SELECT version();

PostgreSQL 9.4.15, compiled by Visual C++ build 1800, 64-bit

So I need install Python 33 in 64bit

edit 2020-10-02

There is also all of these informations in doc of binary ..pgsql\doc\installation-notes.html look at title Procedural Languages

edit 2021-06-11

After install the good version of Python on your system you need copy it to C:\Windows\System32

Replacing the version of python with an old name is not a good solution because you can have librairie it not work with this version. Do that if you know risks. So if you want a newest version of python for plpython, compile it or check edb compilation to check if it contains what you need. You can ask EDB for this information.