question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

Installing psycopg2 on custom runners is giving error for python3.11

See original GitHub issue

Description:

Installing psycopg2 on python3.11 on custom runners gives error

Action version:

Runner version 2.299.1

Platform:

  • Ubuntu
  • macOS
  • Windows

Runner type:

  • Hosted
  • Self-hosted

Tools version:

Python 3.11.0

Repro steps:

Once this is running on a custom runner, here is what I had to do reproduce the issue

mkdir ~/.x
cd ~/.x
/home/ubuntu/actions-runner/_work/_tool/Python/3.11.0/x64/bin/python3.11 -m venv venv
source venv/bin/activate
pip install -U pip wheel
pip install psycopg2

Expected behavior:

psycopg2 should install correctly

Actual behavior:

Collecting psycopg2
  Using cached psycopg2-2.9.5.tar.gz (384 kB)
  Preparing metadata (setup.py) ... done
Building wheels for collected packages: psycopg2
  Building wheel for psycopg2 (setup.py) ... error
  error: subprocess-exited-with-error

  × python setup.py bdist_wheel did not run successfully.
  │ exit code: 1
  ╰─> [40 lines of output]
      /home/ranjith/.x/venv/lib/python3.11/site-packages/setuptools/config/setupcfg.py:508: SetuptoolsDeprecationWarning: The license_file parameter is deprecated, use license_files instead.
        warnings.warn(msg, warning_class)
      running bdist_wheel
      running build
      running build_py
      creating build
      creating build/lib.linux-x86_64-cpython-311
      creating build/lib.linux-x86_64-cpython-311/psycopg2
      copying lib/pool.py -> build/lib.linux-x86_64-cpython-311/psycopg2
      copying lib/tz.py -> build/lib.linux-x86_64-cpython-311/psycopg2
      copying lib/_range.py -> build/lib.linux-x86_64-cpython-311/psycopg2
      copying lib/_ipaddress.py -> build/lib.linux-x86_64-cpython-311/psycopg2
      copying lib/errors.py -> build/lib.linux-x86_64-cpython-311/psycopg2
      copying lib/errorcodes.py -> build/lib.linux-x86_64-cpython-311/psycopg2
      copying lib/__init__.py -> build/lib.linux-x86_64-cpython-311/psycopg2
      copying lib/extras.py -> build/lib.linux-x86_64-cpython-311/psycopg2
      copying lib/sql.py -> build/lib.linux-x86_64-cpython-311/psycopg2
      copying lib/extensions.py -> build/lib.linux-x86_64-cpython-311/psycopg2
      copying lib/_json.py -> build/lib.linux-x86_64-cpython-311/psycopg2
      running build_ext
      building 'psycopg2._psycopg' extension
      creating build/temp.linux-x86_64-cpython-311
      creating build/temp.linux-x86_64-cpython-311/psycopg
      gcc -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC "-DPSYCOPG_VERSION=2.9.5 (dt dec pq3 ext lo64)" -DPSYCOPG_DEBUG=1 -DPG_VERSION_NUM=140005 -DHAVE_LO64=1 -DPSYCOPG_DEBUG=1 -I/home/ranjith/.x/venv/include -I/opt/hostedtoolcache/Python/3.11.0/x64/include/python3.11 -I. -I/usr/include/postgresql -I/usr/include/postgresql/14/server -I/usr/include/libxml2 -c psycopg/adapter_asis.c -o build/temp.linux-x86_64-cpython-311/psycopg/adapter_asis.o -Wdeclaration-after-statement
      In file included from psycopg/adapter_asis.c:28:
      ./psycopg/psycopg.h:35:10: fatal error: Python.h: No such file or directory
         35 | #include <Python.h>
            |          ^~~~~~~~~~
      compilation terminated.

      It appears you are missing some prerequisite to build the package from source.

      You may install a binary package by installing 'psycopg2-binary' from PyPI.
      If you want to install psycopg2 from source, please install the packages
      required for the build and try again.

      For further information please check the 'doc/src/install.rst' file (also at
      <https://www.psycopg.org/docs/install.html>).

      error: command '/usr/bin/gcc' failed with exit code 1
      [end of output]

  note: This error originates from a subprocess, and is likely not a problem with pip.
  ERROR: Failed building wheel for psycopg2
  Running setup.py clean for psycopg2
Failed to build psycopg2
Installing collected packages: psycopg2
  Running setup.py install for psycopg2 ... error
  error: subprocess-exited-with-error

  × Running setup.py install for psycopg2 did not run successfully.
  │ exit code: 1
  ╰─> [42 lines of output]
      /home/ranjith/.x/venv/lib/python3.11/site-packages/setuptools/config/setupcfg.py:508: SetuptoolsDeprecationWarning: The license_file parameter is deprecated, use license_files instead.
        warnings.warn(msg, warning_class)
      running install
      /home/ranjith/.x/venv/lib/python3.11/site-packages/setuptools/command/install.py:34: SetuptoolsDeprecationWarning: setup.py install is deprecated. Use build and pip and other standards-based tools.
        warnings.warn(
      running build
      running build_py
      creating build
      creating build/lib.linux-x86_64-cpython-311
      creating build/lib.linux-x86_64-cpython-311/psycopg2
      copying lib/pool.py -> build/lib.linux-x86_64-cpython-311/psycopg2
      copying lib/tz.py -> build/lib.linux-x86_64-cpython-311/psycopg2
      copying lib/_range.py -> build/lib.linux-x86_64-cpython-311/psycopg2
      copying lib/_ipaddress.py -> build/lib.linux-x86_64-cpython-311/psycopg2
      copying lib/errors.py -> build/lib.linux-x86_64-cpython-311/psycopg2
      copying lib/errorcodes.py -> build/lib.linux-x86_64-cpython-311/psycopg2
      copying lib/__init__.py -> build/lib.linux-x86_64-cpython-311/psycopg2
      copying lib/extras.py -> build/lib.linux-x86_64-cpython-311/psycopg2
      copying lib/sql.py -> build/lib.linux-x86_64-cpython-311/psycopg2
      copying lib/extensions.py -> build/lib.linux-x86_64-cpython-311/psycopg2
      copying lib/_json.py -> build/lib.linux-x86_64-cpython-311/psycopg2
      running build_ext
      building 'psycopg2._psycopg' extension
      creating build/temp.linux-x86_64-cpython-311
      creating build/temp.linux-x86_64-cpython-311/psycopg
      gcc -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC "-DPSYCOPG_VERSION=2.9.5 (dt dec pq3 ext lo64)" -DPSYCOPG_DEBUG=1 -DPG_VERSION_NUM=140005 -DHAVE_LO64=1 -DPSYCOPG_DEBUG=1 -I/home/ranjith/.x/venv/include -I/opt/hostedtoolcache/Python/3.11.0/x64/include/python3.11 -I. -I/usr/include/postgresql -I/usr/include/postgresql/14/server -I/usr/include/libxml2 -c psycopg/adapter_asis.c -o build/temp.linux-x86_64-cpython-311/psycopg/adapter_asis.o -Wdeclaration-after-statement
      In file included from psycopg/adapter_asis.c:28:
      ./psycopg/psycopg.h:35:10: fatal error: Python.h: No such file or directory
         35 | #include <Python.h>
            |          ^~~~~~~~~~
      compilation terminated.

      It appears you are missing some prerequisite to build the package from source.

      You may install a binary package by installing 'psycopg2-binary' from PyPI.
      If you want to install psycopg2 from source, please install the packages
      required for the build and try again.

      For further information please check the 'doc/src/install.rst' file (also at
      <https://www.psycopg.org/docs/install.html>).

      error: command '/usr/bin/gcc' failed with exit code 1
      [end of output]

  note: This error originates from a subprocess, and is likely not a problem with pip.
error: legacy-install-failure

× Encountered error while trying to install package.
╰─> psycopg2

note: This is an issue with the package mentioned above, not pip.
hint: See above for output from the failure.

Issue Analytics

  • State:closed
  • Created 10 months ago
  • Reactions:7
  • Comments:12 (5 by maintainers)

github_iconTop GitHub Comments

2reactions
MaksimZhukovcommented, Nov 30, 2022

Hello @ranjith19 ! Thanks for reporting this! We will investigate the issue and come back to you as soon as we have any updates

0reactions
dsamecommented, Dec 26, 2022

@ranjith19 It sees the correct name of the ubuntu package is libpython3.11-dev now

Please try to execute

sudo apt-get install libpython3.11-dev

According to this it should install missing headers

Read more comments on GitHub >

github_iconTop Results From Across the Web

python - Failed building wheel for psycopg2 (Windows 11)
I am building a Django project, and as I was installing the psycopg2(using virtual env), I kept getting an error. Versions:.
Read more >
pip install psycopg2 error subprocess-exited-with-error
I am currently trying to make use of pypy to try and see with a profiler if I will get better results than...
Read more >
Installing the psycopg2 Python Package for PostgreSQL ...
The psycopg2 package is automatically installed as a dependency of Cloudera Manager Agent, but the version installed is often lower than 2.7.5. If...
Read more >
Cannot Import Pyscopg2 with ArcGIS Pro - GIS Stack Exchange
However I am confident psycopg2 is installed. I can verify this by starting python in terminal and running import psycopg2 without error.
Read more >
How to Install psycopg2 Binary Module in Python
If python is not installed in your system, then you can install it running the given command in your command prompt. pip install...
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found