pipでpsycopg2をインストールするとエラーになる

2020 2/11
pipでpsycopg2をインストールするとエラーになる

こんにちは,ちゆりです。

データベースをMySQLからPostgreSQLに移行した際にPythonモジュールの「psycopg2」が必要になったのでpipでインストールを行った。

$ sudo pip install psycopg2

すると,ターミナルが真っ赤になるほどのエラーが表示された。

1つ1つ状況を切り分けエラー解決できたのでみなさんに共有していこうと思う。

1.パッケージ不足か?

以下の記事より,パッケージ不足が原因という説が...

Qiita
Python - psycopg2のインストール - Qiita
Python - psycopg2のインストール - Qiita Pythonからpostgresに接続するためにpsycopg2をインストールしようとした時につまずいたのでメモ #### 環境 * OS... Ubuntu14.04 * Python... Python 3.2.3 ###...
$ sudo apt-get install -y python3-dev
$ sudo apt-get install -y libpq-dev

それでも,状況は変わらず。エラーは解消されない。

2.gccコンパイラが足りていない?

よくよくエラー内容を見てみると「gccがなんちゃら」って書いてある。

gccコンパイラが足りていない説が...

てことで,Xcodeをインストールしてみる。

xcode-select --install

Xcodeがコンパイルするためにgccコンパイラを使うのでXcodeを導入することで,gccを取得できるというわけ(正式にはgccではなくclangを使っているみたい。細かいことは今回は気にしない)。

これで,解決するか?と思ったが相変わらず解決せず。。

というのも僕のMacには既にXcodeは入っている。

3.Pythonを全消して入れ直す。

psycopg2を使うために必要なpostgresqlはHomebrewでインストールしている。そしてPython公式サイトよりインストールしており,内部のパスがうまく噛み合っていないという説もあり...

ということで,

Pythonを一旦削除し,Homebrewでインストールをし直す。

postgresqlPythonをHomebrewの管轄内で管理することにする。

 

Pythonをアンインストールする

$ which python
--> /usr/bin/python
$ rm -rf /usr/bin/python

pyenvでインストールした場合は
$ which pyenv
--> /../../pyenv (pyenvへのパス)
$ rm -rf /../../pyenv

アプリケーション直下のpythonの削除
$ cd /Application
$ sudo rm -rf python*

 

python.Frameworkの削除

$ sudo rm -rf  /Library/Frameworks/Python.framework

 

Python関連のシンボリックリンクもすべて削除

$ ls -l /usr/local/bin | grep Python

ズラズラとPython関連のシンボリックリンクが出てきます。

$ unlink /usr/local/bin/2to3
$ unlink /usr/local/bin/2to3-3.5
$ unlink /usr/local/bin/2to3-3.6
$ unlink /usr/local/bin/easy_install-3.5
$ unlink /usr/local/bin/easy_install-3.6
$ unlink /usr/local/bin/idle3
$ unlink /usr/local/bin/idle3.5
$ unlink /usr/local/bin/idle3.6
$ unlink /usr/local/bin/pip3
$ unlink /usr/local/bin/pip3.5
$ unlink /usr/local/bin/pip3.6
$ unlink /usr/local/bin/pydoc3
$ unlink /usr/local/bin/pydoc3.5
$ unlink /usr/local/bin/pydoc3.6
$ unlink /usr/local/bin/python3
$ unlink /usr/local/bin/python3-32
$ unlink /usr/local/bin/python3-config
$ unlink /usr/local/bin/python3.5
$ unlink /usr/local/bin/python3.5-32
$ unlink /usr/local/bin/python3.5-config
$ unlink /usr/local/bin/python3.5m
$ unlink /usr/local/bin/python3.5m-config
$ unlink /usr/local/bin/python3.6
$ unlink /usr/local/bin/python3.6-32
$ unlink /usr/local/bin/python3.6-config
$ unlink /usr/local/bin/python3.6m
$ unlink /usr/local/bin/python3.6m-config
$ unlink /usr/local/bin/pyvenv
$ unlink /usr/local/bin/pyvenv-3.5
$ unlink /usr/local/bin/pyvenv-3.6

リンク削除した後,もう一度

$ ls -l /usr/local/bin | grep Python

シンボリックリンクが全て消えていれば完了です。

 

PATHを削除しておく

$ vi ~/.bash_profile
-->PATH="/Library/Frameworks/Python.framework/Versions/3.5/bin:${PATH}"
   PATH="/Library/Frameworks/Python.framework/Versions/3.6/bin:${PATH}"
   PATH="/Library/Frameworks/Python.framework/Versions/3.7/bin:${PATH}"
↑これらのPATHを削除します。

$ source ~/.bash_profile

以上でPythonのアンインストール完了です。

 

PythonをHomebrewでインストール。

brewコマンドでインストールしていきます。

$ brew install python

この1コマンドでインストール完了です。

インストール確認

$ brew list
fish		heroku		icu4c		openssl		postgresql	readline	xz
gdbm		heroku-node	mysql		pcre2		python		sqlite

postgresqlpythonがbrew直下にあれば,おそらくOK

これでおそらく解決??

さぁ,ようやくスタートラインへ戻ってきました。
改めてpsycopg2をインストールしてみます。

pip install psycopg2
やったー!!無事にインストールできました!!!

それでもうまくいかないときは,

pipがうまくpython3と紐付いていない可能性が...

pip3 install psycopg2

これで,おそらく導入できそうです。
psycopg2でpostgreSQLライフを楽しみましょう。

 

ありがとう

この記事が気に入ったら
フォローしてね!

目次
目次