/var/www/yatta47.log

やったのログ置場です。スクラップみたいな短編が多いかと。

Ubuntu18.04にpsycopg2をインストールする

PythonからPostgreSQLサーバをいじりたくて、調べたメモ。PythonからPostgreSQLを操作するにはpsycopg2というのを使えばいいらしい。

ってことで早速実験。

環境

vagrant@vagrant:/vagrant$ cat /etc/os-release
NAME="Ubuntu"
VERSION="18.04.2 LTS (Bionic Beaver)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 18.04.2 LTS"
VERSION_ID="18.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=bionic
UBUNTU_CODENAME=bionic
vagrant@vagrant:/vagrant$
vagrant@vagrant:/vagrant$ python3 --version
Python 3.6.7
vagrant@vagrant:/vagrant$ pip3 --version
pip 9.0.1 from /usr/lib/python3/dist-packages (python 3.6)
vagrant@vagrant:/vagrant$

インストール

pip3でインストールすれば楽勝でしょっと思っていたら・・・・

vagrant@vagrant:/vagrant$ pip3 install psycopg2
Collecting psycopg2
  Cache entry deserialization failed, entry ignored
  Downloading https://files.pythonhosted.org/packages/23/7e/93c325482c328619870b6cd09370f6dbe1148283daca65115cd63642e60f/psycopg2-2.8.2.tar.gz (368kB)
    100% |????????????????????????????????| 368kB 3.4MB/s
    Complete output from command python setup.py egg_info:
    running egg_info
    creating pip-egg-info/psycopg2.egg-info
    writing pip-egg-info/psycopg2.egg-info/PKG-INFO
    writing dependency_links to pip-egg-info/psycopg2.egg-info/dependency_links.txt
    writing top-level names to pip-egg-info/psycopg2.egg-info/top_level.txt
    writing manifest file 'pip-egg-info/psycopg2.egg-info/SOURCES.txt'
    Error: b'You need to install postgresql-server-dev-X.Y for building a server-side extension or libpq-dev for building a client-side application.\n'

    ----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-ntb9gyi3/psycopg2/
vagrant@vagrant:/vagrant$

エラー発生。

エラー文に書いてある通り、ビルドができないようだったので、libpq-devをインストールする。

sudo apt-get install libpq-dev

そして再度実行。

vagrant@vagrant:/vagrant$ pip3 install psycopg2
Collecting psycopg2
  Using cached https://files.pythonhosted.org/packages/23/7e/93c325482c328619870b6cd09370f6dbe1148283daca65115cd63642e60f/psycopg2-2.8.2.tar.gz
Building wheels for collected packages: psycopg2
  Running setup.py bdist_wheel for psycopg2 ... done
  Stored in directory: /home/vagrant/.cache/pip/wheels/3b/d0/9c/fbbaca1e768e108fdcb88a9a50ea43de141adf842741f8623f
Successfully built psycopg2
Installing collected packages: psycopg2
Successfully installed psycopg2-2.8.2
vagrant@vagrant:/vagrant$

成功した。

今日の教訓

エラー文、そして公式ドキュメントをちゃんと読みましょう。

参考サイト

Introduction — Psycopg 2.8.2 documentation

Python を使用して Azure Database for PostgreSQL に接続する | Microsoft Docs