Introduction
GW に突入しましたが、皆様はいかがお過ごしでしょうか?
私は無事 9 連休を勝ち取り、業務で使い込んでいるにもかかわらず意図的に避けてきたPython
の記事を書こうかなと準備しておりました。
折角なのでPython
もアップデートして臨もうと。
なお業務ではanaconda
、自宅ではpip
で管理しており、業務中はpip
=腫れ物です。
にもかかわらず大して調べず深夜のノリでやって更新に失敗......解決に苦労しました。
調べてもpip
下でのPython
アップデートはあまり出てこなかったので、手順と対処法を共有します。
本記事が少しでも読者様の学びに繋がれば幸いです!
「いいね」をしていただけると今後の励みになるので、是非お願いします!
環境
Ubuntu22.04
Python3.10(アップデート前)
Python3.11(アップデート後)
設定ファイルのエクスポート
アップデート後のPython
にパッケージを一括インストールするために、現在の設定をエクスポートします。
anaconda
では環境名.yaml
に書き出すのが一般的という認識ですが、pip
ではrequirements.txt
に書き出します。
pip freeze > requirements.txt
Python のアップデート
最新版のPython
は以下のサイトからダウンロードしました。
非公式とありますが、提供元はPython Japan
様で安心です。
インストール方法は以下の記事が分かりやすかったです。
記事の通り、アップデート後にPython
のバージョンが上がっていることを確認します。
python3 -V
設定ファイルのインポート
requirements.txt
をアップデート後のPython
にインポートします。
pip install -r requirements.txt
トラブル発生
確認のためnumpy
等を import してみると、お馴染みのエラーが発生。
ModuleNotFoundError: No module named 'numpy'
Python
のディレクトリがどこにあるかわからなかったので、pip
インストールしたパッケージの格納先を調べました。
Location
に出力されます。覚えておくと何かと便利です。
pip show numpy
Python
のディレクトリを確認。消した筈のPython3.10
が共存しています。
ちなみに、pip install
した package はPython
配下のsite-packages
に格納されますので各ディレクトリ確認しました。
するとインポート結果はすべてPython3.10
の方に入っていました。
Python3.10
を消して再度インポートを試すと、消した筈のPython3.10
が復活します。
対処法
pip
がインストールされているPython
のバージョンを確認します。
pip -V
Python3.10
の方が返ってきました。
ここまでで頓珍漢な試行錯誤を繰り返していたこともあり、パスがPython3.10
に通っていることは予測できました。
パスをPython3.11
に通せば正常にインポートできそうなので、.bashrc
に 1 行追記します。
export PATH=/home/<ユーザーネーム>/.local/lib/python3.11/site-packages:$PATH
設定ファイルのインポートを再実行すると、無事Python3.11
にパッケージがインポートされました。
site-packages
やPython
ファイルの実行も試し、正常に使用できるようになりました。
おまけ
余談ですが、最近画像編集フリーソフトのGIMP
を使う機会が多くありました。
除去しきれなかった背景の除去や加工、合成、座標確認など行えることと操作性のバランスが良く、特に検証レベルでは何かと役に立つのでおすすめします。
(アプリケーションが豊富なので他の選択肢もありそうですが)Windows
も対応しています。
最後に
紆余曲折ありながらも無事Python3.11
にアップデート完了しました。
速度改善など個人的に試したいことが盛り沢山です。
ただアップデートにより、実装に使う予定だった背景除去のRembg
がバージョン問題で現状使えなさそうで少し困っています......
業務ではOpenCV
で背景除去スクリプトを書いていますが、工数の割に精度は難ありだったので代替案を検討中です。
元も子もないですが、部分的にはPython
で書いて、スクリプト全体はGoogle Colab
で流せるようにするのもありかなと考えています......
最後まで閲覧頂きありがとうございました。
備忘録の側面もありますが、本記事がお役に立てば幸いです!