前回やったことのまとめ
・pandas-profiling(現:ydata-profiling)でデータ集計にトライ
・jupyterNotebookをインストール
・Python3.12をダウンロードし直しVS Codeにインストール
ということで、一日寝かせたトラブルと引き続き格闘。結果Ctrl不調の原因も判明。キーボード買い換えた。
これでようやくコピペが出来る。
さて目下の問題をまとめると
・pandas, ydata-profiling, pixiedustのインポートでエラー
・VS CodeのPythonインタープリターを3.12に変更したものの、仮想環境内のPythonのバージョンは3.13.1のまま
上記内容とエラー文をchatGPTに投げると
・python -m pip install --upgrade pipでpipを最新版に更新
・各パッケージも更新
・カーネルを仮想環境に追加
python -m ipykernel install --user --name=myenv --display-name "Python 3.12 (.venv)"
⇒Notebookの上部メニューからKernel > Change Kernel > "Python 3.12 (.venv)"を選択、とのこと。
しかしjupyterNotebookのあれこれは全くわからないので、一旦VS Codeのターミナルで実行することにする。
さて、当然エラーが直るはずもなく、またまたchatGPTに原因を聞いてみる。
するとwhere pythonで仮想環境がアクティベートされているかの確認を勧められる。正しければ.venv\Scripts\python.exeで返ってくるらしい。
が、これを打ち込んでも無反応。これが原因っぽい。
仮想環境内のpython --versionは3.13.1のまま。これを3.12に直してから各パッケージをインストールすればpandas, ydata-profiling, pixiedustのインポートエラーが直りそう!!!!
希望が見えてきた。
pyenvを導入する
ではPythonのバージョンを変えよう。
Python3.6~3.8しか対応してないんだけどな~、でもインストールしたpythonのバージョン3.5なんやけど的な場面!いざ。
# homebrewをアップデートしておく。
brew update
ダメでした。ていうかMacのコマンドでした。
ちなみに僕はMacのコードなのかWindowsのコードなのかは全く見分けついてませんので、このように行き当たりばったりが基本です。
では別の手段でpyenvを導入しよう。
PowerShellを管理者権限で開き以下を実行。
Invoke-WebRequest -UseBasicParsing -Uri https://raw.githubusercontent.com/pyenv-win/pyenv-win/master/pyenv-win/install-pyenv-win.ps1 -OutFile install-pyenv-win.ps1
& .\install-pyenv-win.ps1
二行に分かれていたような気もするけれどまとめてペーストしちゃった。でもその後、
pyenv install 3.12.6
pyenv global 3.12.6
python --version
でインストールし、確認したらPython 3.12.6が出てきたので成功したっぽい。VSCodeのインタープリターでも3.12.6が選択できるようになっている。
pyenvを導入すれば過去バージョンのPythonのインストールも切り替えも容易そうで便利 だね。
PowerShell,VSCodeをそれぞれ再起動してから、仮想環境を立ち上げpandas, ydata-profilingをインストールし直す。
ここまでやってようやくソースコードの波線が消えた!やったー!!
やっと…やっと実行出来る………
ModuleNotFoundError: No module named 'pkg_resources'
はあ…??
setuptoolsを更新してみたが…
ChatGPTに聞けば、ydata_profilingの内部で使っているpkg_resourceが参照できない、というエラーらしい。
Qiitaの記事にもsetuptoolsを入れて解決というものがあったので間違ってはなさそう。というわけでインストール。
pip install --upgrade pip setuptools
pip install --upgrade ydata-profiling
pip listした結果がこう。(主要箇所を抜粋)
numpy 2.3.3
pandas 2.3.2
setuptools 80.9.0
ydata-profiling 4.16.1
特に問題ないよう思えるが再度実行。
import pandas as pd
from ydata_profiling import ProfileReport
# import pixiedust as px
df = pd.read_csv('testfile.csv')
profile = ProfileReport(df, title="Profiling Report")
profile.to_file("report.html")
# px.display(df)
が、再び同じエラー。
はあ………完全に詰まった………
まとめ
・pyenvでPythonのバージョンを気軽に替えられるようになった
・モジュールのインポートエラーは解決
・ModuleNotFoundError: No module named 'pkg_resources'の解決手段がわからない
ここに記述した以外にも色々試したり、他の記事も読んでみたりしたけれどやっぱりわからんです。途中、生成AIが書いたら危険なコードチェックリストなども拝見しましたが、何が問題でどういう意図で改善しているのかも全くピンと来なかった。これ以上何を頼ればいいんだ………はあ………
何時間かけたとか何文字書いたとかそういう自慢よりも、作業密度や成果で語るべきなのはわかっていますが、5分で出来るという触れ込みのコラムに2週間格闘して何も進まない現実に叩きのめされ、打ちひしがれている。
来週こそ前進するのかなあ。はあ………
ではでは。


