Как исправить ERROR в pip install psycopg2==2.7.*?

Я пытаюсь разместить свое приложение, которое я создал на сервере www с помощью heroku. Но когда я ставлю в терминале на Ubuntu pip install psycopg2==2.7.*, я получаю такую ошибку:

ERROR: Command errored out with exit status 1:
     command: /home/marcin/Python/learning_log/ll_env/bin/python3 -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-c67buptz/psycopg2/setup.py'"'"'; __file__='"'"'/tmp/pip-install-c67buptz/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-install-c67buptz/psycopg2/pip-egg-info
         cwd: /tmp/pip-install-c67buptz/psycopg2/
    Complete output (28 lines):
    running egg_info
    creating /tmp/pip-install-c67buptz/psycopg2/pip-egg-info/psycopg2.egg-info
    writing /tmp/pip-install-c67buptz/psycopg2/pip-egg-info/psycopg2.egg-info/PKG-INFO
    writing dependency_links to /tmp/pip-install-c67buptz/psycopg2/pip-egg-info/psycopg2.egg-info/dependency_links.txt
    writing top-level names to /tmp/pip-install-c67buptz/psycopg2/pip-egg-info/psycopg2.egg-info/top_level.txt
    writing manifest file '/tmp/pip-install-c67buptz/psycopg2/pip-egg-info/psycopg2.egg-info/SOURCES.txt'
    /home/marcin/Python/learning_log/ll_env/lib/python3.8/site-packages/setuptools/config/setupcfg.py:508: SetuptoolsDeprecationWarning: The license_file parameter is deprecated, use license_files instead.
      warnings.warn(msg, warning_class)
    /home/marcin/Python/learning_log/ll_env/lib/python3.8/site-packages/setuptools/command/egg_info.py:643: SetuptoolsDeprecationWarning: Custom 'build_py' does not implement 'get_data_files_without_manifest'.
    Please extend command classes from setuptools instead of distutils.
      warnings.warn(
    
    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
    <http://initd.org/psycopg/docs/install.html>).
    
    ----------------------------------------
ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.

Что мне делать?

Вам необходимо установить pscopg2-binary и запустить в heroku

pip install psycopg2-binary или pipenv install psycopg2-binary в зависимости от вашего virtualenv

Вам нужны некоторые зависимости проверьте этот ответ https://stackoverflow.com/a/46877364/15208727

sudo apt install libpq-dev python3-dev

Мне удалось решить ту же проблему, установив предварительные условия Psycopg2 с помощью следующих команд на Debian.

pip install python3-dev
sudo apt install libpq-dev libpq-dev

Затем подтверждаю, что pg_config находится на моем пути, делая pg_config --version.

Для справки, вот соответствующий раздел из документации.

Предварительные условия сборки

Для установки Psycopg из исходного кода, из дистрибутива с исходным кодом, с GitHub или с PyPI необходимо выполнить предварительные условия сборки.

Psycopg - это обертка на языке C вокруг клиентской библиотеки libpq PostgreSQL. Чтобы установить ее из исходных текстов, вам потребуется:

  • компилятор языка C.

  • Заголовочные файлы Python. Обычно они устанавливаются в пакет, например python-dev или python3-dev. Сообщение типа error: Python.h: No such file or directory является признаком того, что заголовочные файлы Python отсутствуют.

  • Заголовочные файлы libpq. Обычно они устанавливаются в пакет, например libpq-dev. Если вы получаете ошибку: libpq-fe.h: No such file or directory you are missing them.

  • Программа pg_config: обычно она устанавливается пакетом libpq-dev, но иногда ее нет в каталоге PATH. Наличие ее в PATH значительно упрощает установку, поэтому попробуйте выполнить команду pg_config --version: если она вернет ошибку или неожиданный номер версии, найдите каталог, содержащий pg_config, поставляемый с нужной версией libpq (обычно это /usr/lib/postgresql/X.Y/bin/), и добавьте его в PATH:

    .

    $ export PATH=/usr/lib/postgresql/X.Y/bin/:$PATH

    Вам нужен pg_config только для компиляции psycopg2, а не для его регулярного использования.

Вернуться на верх