こんにちは,ちゆりです。
データベースをMySQLからPostgreSQLに移行した際にPythonモジュールの「psycopg2」が必要になったのでpipでインストールを行った。
$ sudo pip install psycopg2
すると,ターミナルが真っ赤になるほどのエラーが表示された。
1つ1つ状況を切り分けエラー解決できたのでみなさんに共有していこうと思う。
1.パッケージ不足か?
以下の記事より,パッケージ不足が原因という説が...
https://qiita.com/makaaso/items/989a48c4d58ae1030e9d
$ 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でインストールをし直す。postgresqlとPythonを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
postgresqlとpythonがbrew直下にあれば,おそらくOK
postgresqlもbrew配下にインストールが必要そうです。
入っていない方は以下のコマンドでインストールをしておきます。
$ brew install postgresql
これでおそらく解決??
さぁ,ようやくスタートラインへ戻ってきました。
改めてpsycopg2をインストールしてみます。
pip install psycopg2
それでもうまくいかないときは,
pipがうまくpython3と紐付いていない可能性が...
pip3 install psycopg2
これで,おそらく導入できそうです。
psycopg2でpostgreSQLライフを楽しみましょう。
コメント