title: pip install psycopg2 - error: command 'x86_64-linux-gnu-gcc' failed with exit status 1
body: <p>I get the following error when trying to install <code>psycopg2</code>:</p>
  <pre><code>   (venv) root@scw-determined-panini:/app# pip install psycopg2
      Collecting psycopg2
        Using cached https://files.pythonhosted.org/packages/a8/8f/1c5690eebf148d1d1554fc00ccf9101e134636553dbb75bdfef4f85d7647/psycopg2-2.8.5.tar.gz
      Building wheels for collected packages: psycopg2
        Running setup.py bdist_wheel for psycopg2 ... error
        Complete output from command /app/venv/bin/python3.8 -u -c &quot;import setuptools, tokenize;__file__='/tmp/pip-build-psll6xe_/psycopg2/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))&quot; bdist_wheel -d /tmp/tmp52or8xexpip-wheel- --python-tag cp38:
        running bdist_wheel
        running build
        running build_py
        creating build
        creating build/lib.linux-x86_64-3.8
        creating build/lib.linux-x86_64-3.8/psycopg2
        copying lib/_json.py -&gt; build/lib.linux-x86_64-3.8/psycopg2
        copying lib/pool.py -&gt; build/lib.linux-x86_64-3.8/psycopg2
        copying lib/tz.py -&gt; build/lib.linux-x86_64-3.8/psycopg2
        copying lib/_lru_cache.py -&gt; build/lib.linux-x86_64-3.8/psycopg2
        copying lib/_ipaddress.py -&gt; build/lib.linux-x86_64-3.8/psycopg2
        copying lib/extensions.py -&gt; build/lib.linux-x86_64-3.8/psycopg2
        copying lib/_range.py -&gt; build/lib.linux-x86_64-3.8/psycopg2
        copying lib/errors.py -&gt; build/lib.linux-x86_64-3.8/psycopg2
        copying lib/compat.py -&gt; build/lib.linux-x86_64-3.8/psycopg2
        copying lib/sql.py -&gt; build/lib.linux-x86_64-3.8/psycopg2
        copying lib/errorcodes.py -&gt; build/lib.linux-x86_64-3.8/psycopg2
        copying lib/extras.py -&gt; build/lib.linux-x86_64-3.8/psycopg2
        copying lib/__init__.py -&gt; build/lib.linux-x86_64-3.8/psycopg2
        running build_ext
        building 'psycopg2._psycopg' extension
        creating build/temp.linux-x86_64-3.8
        creating build/temp.linux-x86_64-3.8/psycopg
        x86_64-linux-gnu-gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -DPSYCOPG_VERSION=2.8.5 (dt dec pq3 ext lo64) -DPG_VERSION_NUM=120004 -DHAVE_LO64=1 -I/app/venv/include -I/usr/include/python3.8 -I. -I/usr/include/postgresql -I/usr/include/postgresql/12/server -c psycopg/psycopgmodule.c -o build/temp.linux-x86_64-3.8/psycopg/psycopgmodule.o -Wdeclaration-after-statement
        In file included from psycopg/psycopgmodule.c:28:0:
        ./psycopg/psycopg.h:36:10: fatal error: libpq-fe.h: No such file or directory
         #include &lt;libpq-fe.h&gt;
                  ^~~~~~~~~~~~
        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
        &lt;https://www.psycopg.org/docs/install.html&gt;).
        
        error: command 'x86_64-linux-gnu-gcc' failed with exit status 1
        
        ----------------------------------------
        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
          Complete output from command /app/venv/bin/python3.8 -u -c &quot;import setuptools, tokenize;__file__='/tmp/pip-build-psll6xe_/psycopg2/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))&quot; install --record /tmp/pip-x62dcj9d-record/install-record.txt --single-version-externally-managed --compile --install-headers /app/venv/include/site/python3.8/psycopg2:
          running install
          running build
          running build_py
          creating build
          creating build/lib.linux-x86_64-3.8
          creating build/lib.linux-x86_64-3.8/psycopg2
          copying lib/_json.py -&gt; build/lib.linux-x86_64-3.8/psycopg2
          copying lib/pool.py -&gt; build/lib.linux-x86_64-3.8/psycopg2
          copying lib/tz.py -&gt; build/lib.linux-x86_64-3.8/psycopg2
          copying lib/_lru_cache.py -&gt; build/lib.linux-x86_64-3.8/psycopg2
          copying lib/_ipaddress.py -&gt; build/lib.linux-x86_64-3.8/psycopg2
          copying lib/extensions.py -&gt; build/lib.linux-x86_64-3.8/psycopg2
          copying lib/_range.py -&gt; build/lib.linux-x86_64-3.8/psycopg2
          copying lib/errors.py -&gt; build/lib.linux-x86_64-3.8/psycopg2
          copying lib/compat.py -&gt; build/lib.linux-x86_64-3.8/psycopg2
          copying lib/sql.py -&gt; build/lib.linux-x86_64-3.8/psycopg2
          copying lib/errorcodes.py -&gt; build/lib.linux-x86_64-3.8/psycopg2
          copying lib/extras.py -&gt; build/lib.linux-x86_64-3.8/psycopg2
          copying lib/__init__.py -&gt; build/lib.linux-x86_64-3.8/psycopg2
          running build_ext
          building 'psycopg2._psycopg' extension
          creating build/temp.linux-x86_64-3.8
          creating build/temp.linux-x86_64-3.8/psycopg
          x86_64-linux-gnu-gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -DPSYCOPG_VERSION=2.8.5 (dt dec pq3 ext lo64) -DPG_VERSION_NUM=120004 -DHAVE_LO64=1 -I/app/venv/include -I/usr/include/python3.8 -I. -I/usr/include/postgresql -I/usr/include/postgresql/12/server -c psycopg/psycopgmodule.c -o build/temp.linux-x86_64-3.8/psycopg/psycopgmodule.o -Wdeclaration-after-statement
          In file included from psycopg/psycopgmodule.c:28:0:
          ./psycopg/psycopg.h:36:10: fatal error: libpq-fe.h: No such file or directory
           #include &lt;libpq-fe.h&gt;
                    ^~~~~~~~~~~~
          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
          &lt;https://www.psycopg.org/docs/install.html&gt;).
          
          error: command 'x86_64-linux-gnu-gcc' failed with exit status 1
          
          ----------------------------------------
      Command &quot;/app/venv/bin/python3.8 -u -c &quot;import setuptools, tokenize;__file__='/tmp/pip-build-psll6xe_/psycopg2/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))&quot; install --record /tmp/pip-x62dcj9d-record/install-record.txt --single-version-externally-managed --compile --install-headers /app/venv/include/site/python3.8/psycopg2&quot; failed with error code 1 in /tmp/pip-build-psll6xe_/psycopg2/
      (venv) root@scw-determined-panini:/app# psycopg2-binary
      psycopg2-binary: command not found
      (venv) root@scw-determined-panini:/app# pip install psycopg2-binary
      Requirement already satisfied: psycopg2-binary in ./venv/lib/python3.8/site-packages
  </code></pre>