質問: conn.cursor() cur.execute("""select * from testtable""") j=cur.fetchall() print(j) ``` **3,CGIコードをMySQL操作するように変更して実行** CGIコードを先程記載した「該当のソースコード」のsample.pyの内容に変更して実行 そうするとNo module named 'MySQLdb'エラーが発生。 **4,ローカルでシェバンと同じように実行して確認** CGIに記載のシェバンが#!/usr/bin/env python3なので同じようにローカルで2で記載したMySQLのテストコードを以下のように実行したところ、無事実行完了。 /usr/bin/env python3 mysqltest.py またローカルで実行したときのPythonとCGIで実行したときのPythonのバージョンが同じ3.6.9であることも確認しました。 またシェバンが#!/usr/bin/env python3.6にした時も同様に3のエラーが発生して4で同じようなことをしたときに無事動作した。 --- エラーの内容的にCGIで動作させたときのPythonライブラリとローカルで実行させたときのPythonライブラリ内容が違うようですが、どちらもバージョンは同じです。 なぜCGIの方はMySQLdbがないのでしょうか。 また対策方法を教えてください。 ### 補足情報(FW/ツールのバージョンなど) OS:ubuntu18.04 Python:python3.6.9
回答: mysqlclientのインストール場所がHOME配下になっていることが原因でした。 インストールの時に pip3 install mysqlclient としていた関係でインストール場所がhome配下のフォルダにインストールされていました。 そのため sudo pip3 install mysqlclient としたことでusr配下のフォルダにインストールされ、CGIでも無事認識しました。