【Python】mysqlclientをpipでインストールしようとしたら躓いた話

Linux
スポンサーリンク

PythonとMariaDBをインストールしたので、せっかくだからPythonからMariaDBを触りたいと思い。

いい感じのパッケージないかなーと調べていたら「mysqlclient」というものがあるようなので、それを使ってみようと意気揚々とインストールしようとしたらめちゃくちゃエラー吐いてしんどかった話です。

同じような人がいたときの助けになればよいと思いまとめておきます。

あと、たぶん次同じようなことをしようとしたときにまとめてないと忘れる。

 

スポンサーリンク

環境

OS

cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)

Kernel

uname -a
Linux ********** 3.10.0-862.11.6.el7.x86_64 #1 SMP Tue Aug 14 21:49:04 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

Python

python --version
Python 3.6.6

MariaDB

# yum list installed
MariaDB-server.x86_64 10.3.14-1.el7.centos @mariadb-main

 

pipでmysqlclientをインストールする

とりあえずインストールしてみる。

# pip install mysqlclient

Failed building wheel for mysqlclient
Running setup.py clean for mysqlclient
Failed to build mysqlclient
Installing collected packages: mysqlclient
Running setup.py install for mysqlclient … error

まあ、なんとなく予想していましたよ・・・

 

pipをアップデートする

エラー内容を確認すると、以下メッセージが表示されていました。

You are using pip version 19.0.3, however version 19.1.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.

英検4級の英語力によると、おそらく「pipのバージョンが古いのでアップデートせよ」というように読めたので、指示通りアップデート。

# pip install --upgrade pip

Collecting pip
Downloading https://files.pythonhosted.org/packages/5c/e0/be401c003291b56efc55aeba6a80ab790d3d4cece2778288d65323009420/pip-19.1.1-py2.py3-none-any.whl (1.4MB)
100% |????????????????????????????????| 1.4MB 17.6MB/s
Installing collected packages: pip
Found existing installation: pip 19.0.3
Uninstalling pip-19.0.3:
Successfully uninstalled pip-19.0.3
Successfully installed pip-19.1.1

OK!

 

gccを導入する。

unable to execute 'gcc': No such file or directory
error: command 'gcc' failed with exit status 1

以上のエラーも吐いていたので、同じく対応します。

とはいえこれは簡単で、

「gcc入ってねーぞコンパイルできねーじゃねーか」

って怒られているだけです。ので、入れてあげます。

# yum install gcc

インストール:
gcc.x86_64 0:4.8.5-36.el7_6.2
依存性関連をインストールしました:
cpp.x86_64 0:4.8.5-36.el7_6.2 glibc-devel.x86_64 0:2.17-260.el7_6.4
glibc-headers.x86_64 0:2.17-260.el7_6.4 kernel-headers.x86_64 0:3.10.0-957.12.1.el7
libmpc.x86_64 0:1.0.1-3.el7 mpfr.x86_64 0:3.1.1-4.el7
依存性を更新しました:
libgcc.x86_64 0:4.8.5-36.el7_6.2 libgomp.x86_64 0:4.8.5-36.el7_6.2
完了しました!

新しいサーバを立てるとついついここら辺を忘れちゃうんですよね・・

テンプレートを作れって話ですけど・・。

 

pipインストールリベンジその1

# pip install mysqlclient

MySQLdb/_mysql.c:37:20: 致命的エラー: Python.h: そのようなファイルやディレクトリはありません
#include "Python.h"

ぬわあああああん

 

python-develを導入する

そもそもPython.hって何ぞや?って調べてみると、python-develに入っているモジュールのようです。

ので、とりあえずpython-develをインストールしてみる。

# yum install python-devel
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
base: ftp-srv2.kddilabs.jp
epel: epel.scopesky.iq
extras: ftp-srv2.kddilabs.jp
updates: ftp-srv2.kddilabs.jp
パッケージ python-devel-2.7.5-77.el7_6.x86_64 はインストール済みか最新バージョンです
何もしません

あれ?

って一瞬思ったのですが、よく考えたら使っているpythonは3.6。

よって、python-develも3.6用のものを導入しないといけません。

# yum install python36-devel
インストール:
python36-devel.x86_64 0:3.6.6-5.el7
依存性関連をインストールしました:
dwz.x86_64 0:0.11-3.el7 perl-srpm-macros.noarch 0:1-8.el7
python-rpm-macros.noarch 0:3-23.el7 python-srpm-macros.noarch 0:3-23.el7
python3-rpm-macros.noarch 0:3-23.el7 redhat-rpm-config.noarch 0:9.1.0-87.el7.centos
zip.x86_64 0:3.0-11.el7
完了しました!

OK!

 

pipインストールリベンジその2

# pip install mysqlclient 

/bin/ld: -lmariadb が見つかりません
collect2: エラー: ld はステータス 1 で終了しました
error: command 'gcc' failed with exit status 1

ヌゥン!ヘッ!ヘッ! ア゛ア゛ア゛ア゛ァ゛ァ゛ァ゛ァ゛ア゛↑ア゛↑ア゛↑ア゛↑ア゛ア゛ア゛ァ゛ァ゛ァ゛ァ゛!!!! ウ゛ア゛ア゛ア゛ア゛ア゛ア゛ァ゛ァ゛ァ゛ァ゛ァ゛ァ゛ァ!!!!! フ ウ゛ウ゛ウ゛ゥ゛ゥ゛ゥ゛ン!!!! フ ウ゛ゥ゛ゥ゛ゥン!!!!

(酸欠)

 

MariaDB-sharedをインストールする

/bin/ld: -lmariadb が見つかりません

これって何ぞや?と調べてみると、「MariaDB-devel」「MariaDB-shared」がインストールされていないときに出力される可能性のあるエラーとのこと。

MariaDB-develはすでにインストールされていたので、MariaDB-sharedをインストールしてみる。

# yum install MariaDB-shared


インストール:
MariaDB-shared.x86_64 0:10.3.14-1.el7.centos
完了しました!

これで・・・タノムゥ・・・

 

pipインストールリベンジその3

# pip install mysqlclient

Collecting mysqlclient
Using cached https://files.pythonhosted.org/packages/f4/f1/3bb6f64ca7a429729413e6556b7ba5976df06019a5245a43d36032f1061e/mysqlclient-1.4.2.post1.tar.gz
Building wheels for collected packages: mysqlclient
Building wheel for mysqlclient (setup.py) … - \ done
Stored in directory: /root/.cache/pip/wheels/30/91/**/2ee952bce05b1247*****5c6710c6130e49468a5240ae27134
Successfully built mysqlclient
Installing collected packages: mysqlclient
Successfully installed mysqlclient-1.4.2.post1

成し遂げたぜ。

 

まとめ

とりあえずこれでmysqlclientが使えるようになったはずです。

思ったのは、pipってやっぱ便利だわってこと。

これソースインストールだったらもっと手間かかってただろうなあ・・・。

 

MariaDB & MySQL全機能バイブル 現場で役立つA to Z 内部構造の詳説から運用管 [ 鈴木啓修 ]
created by Rinker

 

 

コメント

タイトルとURLをコピーしました