Python 3.5にpsycopg2をインストール(Mac編)

prunus1350.hatenablog.com
先日、Windowsにpsycopg2をインストールしましたが、今回はMac(El Capitan)にインストールします。*1

Psycopgの公式ドキュメントIntroduction — Psycopg 2.6.2.dev0 documentation
によると pip が使えるとのことなので、

$ pip install psycopg2

とやってみると

Error: pg_config executable not found.

pg_config がないと言われました。
PostgreSQLをインストールすれば良いようです。

手元のマシンにはパッケージマネージャが入っていない状態なので、
まずはこちらHomebrew — OS X 用パッケージマネージャーを参考に
Homebrewをインストールします。

$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

次にPostgreSQLをインストールします。

$ brew install postgresql

再度 pip install を試みます。

$ pip install psycopg2
Collecting psycopg2
  Using cached psycopg2-2.6.1.tar.gz
Building wheels for collected packages: psycopg2
  Running setup.py bdist_wheel for psycopg2
  Stored in directory: /Users/prunus1350/Library/Caches/pip/wheels/e2/9a/5e/7b620848bbc7cfb9084aafea077be11618c2b5067bd532f329
Successfully built psycopg2
Installing collected packages: psycopg2
Successfully installed psycopg2-2.6.1

インストールは成功しました。

しかし、Pythonコンソールにてインポーとしようとすると、

>>> import psycopg2
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/prunus1350/anaconda/lib/python3.5/site-packages/psycopg2/__init__.py", line 50, in <module>
    from psycopg2._psycopg import BINARY, NUMBER, STRING, DATETIME, ROWID
ImportError: dlopen(/Users/prunus1350/anaconda/lib/python3.5/site-packages/psycopg2/_psycopg.cpython-35m-darwin.so, 2): Library not loaded: libssl.1.0.0.dylib
  Referenced from: /Users/prunus1350/anaconda/lib/python3.5/site-packages/psycopg2/_psycopg.cpython-35m-darwin.so
  Reason: image not found

となります。

こちら
stackoverflow.com
を見ると、libssl と libcrypto のバージョンが低いのが原因のようです。

El Capitanでは /usr/lib 直下に書き込みができないので /usr/local/lib にリンクを作成します。

$ ln -s /usr/local/Cellar/openssl/1.0.2e/lib/libssl.1.0.0.dylib /usr/local/lib
$ ln -s /usr/local/Cellar/openssl/1.0.2e/lib/libcrypto.1.0.0.dylib /usr/local/lib

確認

>>> import psycopg2
>>>

ちゃんとインポートできました。

*1:Windows編と違ってMac編はPython 3.4とPython 3.5の手順は同じで良いようです。