I’m using Amazon Linux, in which the default Python version is 2.7. I YUM installed 3.7 and changed the alias python=python3.
Now when I do python -V, I’m getting: Python 3.7.6.
I run pip3 install psycopg2.
And I am getting:
pip3 install psycopg2
Defaulting to user installation because normal site-packages is not writeable
Collecting psycopg2
Using cached psycopg2-2.8.5.tar.gz (380 kB)
ERROR: Command errored out with exit status 1:
command: /bin/python3 -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-b3bpay2i/psycopg2/setup.py'"'"'; __file__='"'"'/tmp/pip-install-b3bpay2i/psycopg2/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base /tmp/pip-pip-egg-info-3c18jwyz
cwd: /tmp/pip-install-b3bpay2i/psycopg2/
Complete output (23 lines):
running egg_info
creating /tmp/pip-pip-egg-info-3c18jwyz/psycopg2.egg-info
writing /tmp/pip-pip-egg-info-3c18jwyz/psycopg2.egg-info/PKG-INFO
writing dependency_links to /tmp/pip-pip-egg-info-3c18jwyz/psycopg2.egg-info/dependency_links.txt
writing top-level names to /tmp/pip-pip-egg-info-3c18jwyz/psycopg2.egg-info/top_level.txt
writing manifest file '/tmp/pip-pip-egg-info-3c18jwyz/psycopg2.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>).
----------------------------------------
ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
I try to pip3 the binary with: pip3 install psycopg2-binary
And I did:
pip3 -list
And the result is:
Package Version Location Installer
--------------- ------- ------------------------------------------------- ---------
pip 20.1 /usr/local/lib/python3.7/site-packages pip
psycopg2-binary 2.8.5 /home/ec2-user/.local/lib/python3.7/site-packages pip
setuptools 38.4.0 /usr/lib/python3.7/site-packages pip
wheel 0.34.2 /home/ec2-user/.local/lib/python3.7/site-packages pip
And when I check if file does exist:
ls -l /home/ec2-user/.local/lib/python3.7/site-packages
total 4
drwxrwxr-x 3 ec2-user ec2-user 302 Apr 30 15:06 psycopg2
drwxrwxr-x 2 ec2-user ec2-user 102 Apr 30 15:06 psycopg2_binary-2.8.5.dist-info
drwxrwxr-x 2 ec2-user ec2-user 4096 Apr 30 15:06 psycopg2_binary.libs
drwxrwxr-x 4 ec2-user ec2-user 233 Apr 30 16:03 wheel
drwxrwxr-x 2 ec2-user ec2-user 130 Apr 30 16:03 wheel-0.34.2.dist-info
I also installed postgresql10 client using:
sudo amazon-linux-extras install postgresql10
Why am I still getting the error?
From the documentation:
The
psycopg2-binarypackage is meant for beginners to start playing withPythonandPostgreSQLwithout the need to meet the build requirements.If you are the maintainer of a published package depending on
psycopg2you shouldn’t usepsycopg2-binaryas a module dependency. For production use you are advised to use the source distribution..
Since this package is needed in order to connect to the PostgreSQL database, you will need libpq. psycopg2 library is built as a wrapper around libpq. It requires some PostgreSQL binaries and headers required for building 3rd-party applications for PostgreSQL. Run:
sudo apt install python3-dev libpq-dev
The main goal of the command above is to provide all requirements for building psycopg2. To install the latest package in your system, use pip:
pip3 install psycopg2
If you cannot find the pg_config, check your PATH. Chances are it is not in your PATH.
On Alpine, the library containing pg_config is postgresql-dev. To install, run:
apk update && \
apk add postgresql-dev gcc python3-dev musl-dev
# Then you can install pyscopg2 say from your requirements.txt file or manually
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With