DjangoのためにWindowsにmysqlclientをインストールする方法の解説【罠にハマり10時間費やす】

DjnagoのためにWindowsにmysqlclientをインストールする手順・方法の解説

WindowsにPythonフレームワークのDjangoを使えるようにする環境構築のついての記事として、これまで次の2つの記事を書きました。

どちらも公式ドキュメントの通りにすすめていく作業の手順を説明したものです。

次に今回の記事では、DjangoためのデータベースとしてMySQL(しかもエックスサーバー上のMySQL)を使うための前準備として、Windowsにmysqlclientをインストールする手順を解説します。

そのインストールからエックスサーバー上のMySQLへのSSH接続は「超難問」で、罠にハマ続けできるようになるまで10時間を費やしました。

Djangoとデータベース:SQLiteを使うのが最も楽

Djangoでは公式標準データーベースとしてSQLiteが付属しています。そしてそれを使うのが一番楽です。いろんな意味で楽です。

一方で他のデータベースももちろん使えます。

今回私はMySQLを使うことにしました。それもエックスサーバー上のMySQLを使うことにしました。

なぜならこのブログもエックスサーバーで運用していますし、すでに同サーバー上ではMySQLが使えるようになっています。だったらもう自分のPCにMySQLを構築せずに、エックスサーバーのMySQLを使えばいいのでは?と思ったからです。月額料金払っていますし、使えるのものは使わないと。

ですがこの考えが間違いでした・・・

とにかく何をしてもエラー。ネットで英語記事などを調べても「うーん・・・?」となるようなものばかりしか見つけられず、結局様々なエラーを解決するのに10時間かかりました。

というわけで、初心者には「Djangoは標準のSQLiteをそのまま使う」ことを強く、強くおすすめします。特にWindowsの場合は。

手順その1:MySQLのインストール

まずこれが大事です。先にMySQLをWindowsにインストールしておきましょう。私はこれをやっていなかったがために(実際は不明ですが)、エラー続出で全く作業が進みませんでした。

というのも、上述のように「エックスサーバー上のMySQLを使うのだから、自分のPCにはMySQLをインストールする必要なんてないだろう」と思っていたからです。そんな浅はかな考えがそもそもの間違いでした。

WindowsへのMySQLのインストール方法はネットでいくらでも日本語の解説ページが出てきますので、各自調べてみてください。とりあえずインストール場所はCドライブのフォルダ「Program Files」の中でいいでしょう。

C:\Program Files\MySQL

エクスプローラー上のパスはこんな感じですね。

無事にインストールできれば、コマンドプロンプトを使ってMySQLを起動させ、ログインし、そしてまたログアウト。その後にMySQLを停止させてみてください。これら一連の作業がきちんとできるか確認してみてください。

Windowsでのそのやり方もネット上で豊富に解説があるので調べてみてください。

コマンドプロンプト上のエラーメッセージ

なおMySQLをインストールせずに、pipを使って、

pip install mysqlclient

とした場合には、私のWindowsのコマンドプロンプトでは次のようなエラーメッセージとなりました。

      MySQLdb/_mysql.c(29): fatal error C1083: include ファイルを開けません。'mysql.h':No such file or directory
      error: command 'C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.31.31103\\bin\\HostX86\\x86\\cl.exe' failed with exit status 2
      [end of output]

  note: This error originates from a subprocess, and is likely not a problem with pip.
error: legacy-install-failure

× Encountered error while trying to install package.
╰─> mysqlclient

note: This is an issue with the package mentioned above, not pip.
hint: See above for output from the failure.

ただこのエラーが、MySQLをインストールしなかったからなのか、それとも次のWheelファイルのインストールと関係しているのかはわかりません。

プログラミングはWindowsよりMacのほうが楽で便利?

さていよいよmysqlclientのインストールですが、mysqlclientの公式サイト(?)「mysqlclient 2.1.1」には、

Building mysqlclient on Windows is very hard. But there are some binary wheels you can install easily.

と書かれています。「Windowsでmysqlclientを使えるようにするのはとても難しい」と。これはLinuxやMacの項目には書かれていません。

「プログラミングはWindowsよりMacのほうが楽」とよく言われる理由の1つがこういったことなのでしょう。

手順その2:mysqlclientのインストール

whlファイルの選び方(2022年12月時点)

ちょっと話が脱線しましたが、Windowsにmysqlclientをインストールする作業に入ります。まず、Archived: Unofficial Windows Binaries for Python Extension Packagesへアクセス。

そしてその中の「Mysqlclient: a fork of the MySQL-python interface for the MySQL database.」という項目にいきます。

そこにいろいろファイルが並んでいるわけですが、そのファイル名に「cp39」とか「cp38」とか書かれている部分があります。それはPythonのバージョンを表します。つまり、Pythonのバージョンが3.9系ならばcp39と書かれているものを選びましょう。3.8系ならcp38系を選びましょう。

私のPythonは3.8だったので、次の2つがダウンロードする候補となりました。(2022年12月時点)

  • mysqlclient‑1.4.6‑cp38‑cp38‑win_amd64.whl
  • mysqlclient‑1.4.6‑cp38‑cp38‑win32.whl

次に「amd64」という言葉もファイル名に含まれていることに注目してください。これは64ビット版Windows用ということです。

64ビット版Windowsかどうかはキーボードの「Windowsキー」と「Pauseキー」を同時におせば、みなさんが使っているパソコンの情報が出現します。Windows10でのその画像が下です。

では「64ビットなので、amd64を選べばいい」と考えると実はここに罠があります。Pythonのバージョン情報以外にも使っているPythonが何ビット版なのかも重要だからです。

Pythonが32ビット版ならばamc64ではないほうを選んだほうがいいです。次の参考ページをみてください。

参考:ERROR: mysqlclient-1.4.6-cp38-cp38-win_amd64.whl is not a supported wheel on this platform.

この参考ページではPythonが64ビット版かどうかを確認するコードが紹介されています。

私の場合は、

(venv_django) C:\Users\hogehoge\venv_django\mysite>python
Python 3.8.0 (tags/v3.8.0:fa919fd, Oct 14 2019, 19:21:23) [MSC v.1916 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> is_64bits = sys.maxsize > 2**32
>>> is_64bits
False
>>>

というわけで32ビット版だとわかりました。

よって、選ぶべきファイルは、mysqlclient‑1.4.6‑cp38‑cp38‑win32.whlとなりました。

それをダウンロードします。保存先ですが、

私はこれまでのDjango解説記事で、仮想環境のフォルダ「venv_django」を作り、その中にプロジェクト名mysiteのためのフォルダ「mysite」を作っています。

C:\Users\hogehoge\venv_django\mysite

このフォルダ「mysite」の中に保存しました。

whlのインストール

保存したそれをpipを使ってインストールします。

(venv_django) C:\Users\hogehoge\venv_django\mysite>pip install mysqlclient‑1.4.6‑cp38‑cp38‑win32.whl

もしPythonのバージョンなどど合わない場合はエラーとして、

ERROR: mysqlclient-1.4.6-cp38-cp38-win_amd64.whl is not a supported wheel on this platform.

などと表示されます。その場合は、ダウンロードするファイルを変えてみましょう。

成功すると、

Successfully installed mysqlclient~

と表示されます。

これでWindows上のDjangoのためにmysqlclientをインストールする作業は終わりです。

最速でプログラミングをマスターするならTechAcademy [テックアカデミー] がオススメです。

マイペースで学ぶなら世界最大級の動画学習サイトUdemyがオススメです。セールで安く買える講座も多数!

1件のコメント

  1. […] 今回の記事を書いておきながらアレなんですが・・・、正直、前回記事「DjangoのためにWindowsにmysqlclientをインストールする方法の解説【罠にハマり1…」でも書いたように、プログラミング初心者(ネットワークにも詳しくない人)は、素直にDjangoに標準搭載されているSQLiteを使ったほうが頭悪い言い方ですが「1億倍」良いです。 […]

コメントは受け付けていません。