2
u0_a439@localhost: /data/data/com.termux/files/home/storage/shared/z_termux
➜   pip3 install psycopg2-binary

i want to install psycopg2-binary on termux, but i got error like this.

Collecting psycopg2-binary Using cached psycopg2-binary-2.9.3.tar.gz (380 kB)
Preparing metadata (setup.py) ... error
error: subprocess-exited-with-error

  × python setup.py egg_info did not run successfully.
  │ exit code: 1
  ╰─> [23 lines of output]
      running egg_info
      creating /data/data/com.termux/files/usr/tmp/pip-pip-egg-info-ayuu7y_q/psycopg2_binary.egg-info
      writing /data/data/com.termux/files/usr/tmp/pip-pip-egg-info-ayuu7y_q/psycopg2_binary.egg-info/PKG-INFO
      writing dependency_links to /data/data/com.termux/files/usr/tmp/pip-pip-egg-info-ayuu7y_q/psycopg2_binary.egg-info/dependency_links.txt
      writing top-level names to /data/data/com.termux/files/usr/tmp/pip-pip-egg-info-ayuu7y_q/psycopg2_binary.egg-info/top_level.txt
      writing manifest file '/data/data/com.termux/files/usr/tmp/pip-pip-egg-info-ayuu7y_q/psycopg2_binary.egg-info/SOURCES.txt'

      Error: pg_config executable not found.

      pg_config is required to build psycopg2 from source.  Please add the directory
      containing pg_config to the $PATH or specify the full executable path with the
      option:

          python setup.py build_ext --pg-config /path/to/pg_config build ...

      or with the pg_config option in 'setup.cfg'.

      If you prefer to avoid building psycopg2 from source, please install the PyPI
      'psycopg2-binary' package instead.

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

      [end of output]

  note: This error originates from a subprocess, and is likely not a problem with pip.
error: metadata-generation-failed

× Encountered error while generating package metadata.
╰─> See above for output.

note: This is an issue with the package mentioned above, not pip.
hint: See above for details.                                 /2.4s

u0_a439@localhost: /data/data/com.termux/files/home/storage/shared/z_termux
➜

I'm very grateful if someone help solve this problem

Kim jon stack
  • 21
  • 2
  • 3
  • Please check https://stackoverflow.com/questions/21079820/how-to-find-pg-config-path for an answer that may help you. – Marcell Mar 08 '22 at 09:23

1 Answers1

4

I think psycopg2-binary package has been pre-built assuming that it would run on a Linux system which uses the glibc implementation as the standard C library. Termux runs on Android, which does not use glibc. So I think what is happening is that pip understands that and falls back to building psycopg from source, in which case the build dependencies should be installed before.

Try installing the build dependencies:

apt-get install libpq-dev gcc python3-dev musl-dev

See https://github.com/psycopg/psycopg2/issues/684

A web search for the same problem shows that this is also the case for other Linux systems that don't use glibc, like Alpine Linux.

zaadeh
  • 1,711
  • 2
  • 23
  • 37
  • ➜ apt-get install libpq-dev gcc python3-dev musl-dev Reading package lists... Done Building dependency tree... Done Reading state information... Done Package gcc is not available, but is referred to by another package. This may mean that the package is missing, has been obsoleted, or is only available from another source However the following packages replace it: libllvm E: Unable to locate package libpq-dev E: Package 'gcc' has no installation candidate E: Unable to locate package python3-dev E: Unable to locate package musl-dev – Kim jon stack Mar 08 '22 at 09:21
  • still fail sir. – Kim jon stack Mar 08 '22 at 09:22
  • 1
    For those who might care, on MAC Os I have successfully installed `psycopg2-binary` package, after installing the mentioned packages `brew install libpq-dev gcc python-yq` – monti Jul 18 '22 at 19:43