ライブラリの管理
今回はプログラミング環境のお話。
Pythonを使ってプログラミングしていると必要なのがライブラリの管理。
例えば「numpy」やら「matplotlib」やら色々ライブラリをインストールして、どんどんPythonを使いやすくしていくのですが、これらのライブラリはアップデートされたからって、何か連絡が来るわけではありません。
つまり知らず知らずのうちにライブラリがアップデートされているのにも関わらず、いつまでも古いライブラリを使って、不便な思いをしている可能性があるわけです。
さてそんなライブラリですが、Pythonを使っている多くの人は「pip」というライブラリ管理システムを使っていると思います。
(多くのサイトで「pip install XXXXX」とやってライブラリをインストールしていることから)
そしてpipでライブラリをアップデートするには、「pip install -U XXXXX」という感じで「-U」というオプションをつけて実行することでアップデートできます。
しかしpipではアップデートが必要なライブラリを一つずつアップデートしていくしか方法がなく、一括ではアップデートできないようです。
そうなると毎日毎日ライブラリのアップデートをチェックするわけではないので、下手すると大量のライブラリを一つ一つ手作業でアップデートしていかなければならないなんて状況が生まれるわけです。
ですが大量のライブラリを一つ一つアップデートなんてしてられないわけで、じゃあ問題なく動いているし、アップデートしなくていいかとなりがちです。
私がまさにその状況だったのですが、それは良くないと思い、一括でライブラリをアップデートできないか調べてみたところ、「pip-review」というライブラリでできるということを知りました。
この「pip-review」をインストールして、「pip-review –auto」 とするだけで最新ではないライブラリは全て最新版になるという素晴らしいライブラリです。
ということでこのライブラリを早速インストールして試してみたのですが、エラーでライブラリがアップデートできないという状況に直面しました。
さて問題はなんだったのでしょうか?
問題はPythonのライブラリ管理システム「pip」だけでなく、Anacondaのライブラリ管理システム「conda」もライブラリの管理に一部使われており、そのため「conda」でインストールされたライブラリに「pip-review」が対応できなかったということでした。
巷では「pip」と「conda」を介在させるなと言われていることは知っていて、新しくインストールするライブラリは全て「pip」でインストールしていたのですが、ここに来て不都合が生まれてきたというわけです。
この状況も長らく放置してきたのですが、やっと一念発起して改善したので、その流れを書いていこうと思います。
次のプログラミング環境の方針
まず方針としては以下のようにしました。
- 今後はpipで一本化→Anacondaをアンインストール
- Jupyter notebookは使いたい→pipでJupyter notebookをインストール
意外と知らない人もいるのかもしれませんが、Jupyter notebookはあくまでも”Python”のツールの一つであり、”Anaconda”のツールではないのです。
つまりAnacondaとは別にJupyter notebookだけをインストールして使うということも可能なのです。
ということで今回やった流れとしてはこんな感じです。
- Anacondaのアンインストール
- 古いPythonのアンインストール
- Pythonのインストール
- Pythonの環境設定
- pipのアップデートとライブラリ類のインストール
ということで始めていきましょう。
Anacondaのアンインストール
Anacondaのアンインストールに関しては、こちらの記事に従って行いました。
ただ「conda install anaconda-clean」をした時にこんなエラーが出ました。
conda install anaconda-clean
実行結果
RemoveError: 'requests' is a dependency of conda and cannot be removed from
conda's operating environment.
このエラーに対してはこちらの記事で紹介されているように「conda update –force conda」をすることで解決しました。
古いPythonのアンインストール
次に古いPythonのアンインストールを行いました。
これは「pip」と「conda」を併用していたため、ライブラリがぐちゃぐちゃになっていることを懸念したためです。
またインストールしてあったPython自体もその時点では古くなっていたため、どうせなら変えてしまえという思いに至ったわけです。
Pythonのアンインストールに関しては、こちらの記事の通りに行い、問題なくアンインストールできました。
新しいPythonのインストール
ということで次は新しいPythonのインストールです。
Pythonの公式サイトにアクセスし、「Downloads」をクリックします。
インストールするOSをクリックして、「Python X.XX.X」(X.XX.Xはバージョン)のボタンをクリックします。
私はOSは「Mac」を選択し、その時のバージョンは「3.10.4」でした。
「python-X.XX.X-macos11.pkg」というファイルがダウンロードされますので、ダブルクリックして開きます。
インストーラーが起動しますので、「続ける」をクリック。
「大切な情報」が表示されるので、読んで「続ける」をクリック。
「使用許諾契約」が表示されるので、読んで「続ける」をクリック。
「使用許諾契約の同意の確認ウインドウ」が開くので、同意できれば「同意する」をクリック。
インストール先を選択して、「続ける」をクリック。
「インストール」をクリック。
インストールの許可のためにパスワード入力かTouch IDが要求されるのでどちらかをやり許可をします。
インストールが始まるので、しばし待ちます。
インストールが完了したら、「閉じる」をクリック。
これでPythonのインストールが完了しました。
Pythonの環境設定
次にPythonのパスを設定します。
ちなみに以下の手順はMacの場合です。
ターミナルを開き、次のコマンドをタイプします。
vi .zshrc
「.zshrc」とはターミナルの設定ファイルで、ターミナルを開いた際、最初に読み込まれ、環境設定をしてくれるファイルです。
今回はここにPythonのショートカットの情報を記入します。
ここでは「vi」
「.zshrc」が開いたら、「編集モードにしてから(つまり「i」を押してから)」、次のコマンドをタイプします。
#Python
alias python='/usr/local/bin/python3.10'
Pythonのバージョンの数字に関しては適宜書き換えてください。
またPythonのインストール先はデフォルトでは「/usr/local/bin/」の中ですが、もしかしたら環境によって違う場合もあるかもしれません。
その場合はこちらの記事のコマンドを参考にして、色々な場所を探してみてください。
入力し終わったら、「ESC」を押して(編集モードの終了)、「:wq」とタイプして、保存終了してください。
これで次にターミナルを開いた時から、「Python」とタイプしてエンターを押すと、Pythonが立ち上がるようになります。
試してみるとこんな感じです。
python
実行結果
Python 3.10.4 (v3.10.4:9d38120e33, Mar 23 2022, 17:29:05) [Clang 13.0.0 (clang-1300.0.29.30)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>
これでインストールしたPythonのバージョンが合っていればPythonの設定は完了です。
pipのアップグレードとライブラリのインストール
今回、Anacondaをアンインストールした上に、これまで入っていたPythonも消していますので、ライブラリも何もない状態になっています。
そこでライブラリのインストールをしていくのですが、その前にpipのアップグレードを行います。
通常は「pip install –upgrade pip」でpipのアップグレードを行うのですが、何故か「pip3 install –upgrade pip」でないとアップグレードできませんでした。
ただ毎回「pip3」とするわけではなく、この次からは「pip」で動いたので、最初だけなのか、まだ古いPythonの影響が残っていたのか分かりませんが、とりあえず「pip」でダメだった方は「pip3」でも試してみてください。
pip自体のアップグレードが終わったら、あとは「pip install XXXXX」でライブラリのインストールしていって、前の環境を整えていきましょう。
Jupyter notebookに関しては「pip install notebook」でインストールできます。
そして最後に「pip-review」をインストールするのをお忘れなく。
これでAanconda環境からJupyter notebook+pipの環境になったので、心置きなく「pip-review」でライブラリの一括アップデートが可能になります。
ただ一つだけ注意点があり、「mistune」というライブラリだけは、最新版にアップデートしてしまうとバージョンのコンフリクトが発生し、Jupyter notebookが動かなくなってしまいます。
そのため「pip-review –auto」で一括アップデートした後に「pip install mistune==0.8.4」で0.8.4にダウングレードしています。
最後に一手間あるにしても大量のライブラリを一つずつアップデートする手間よりは楽でしょう。
あとJupyter Notebookでファイルを作成・更新した際に自動で「.pyファイル」を作成してくれる「JupyText」を入れておくことをお勧めします。
Jupyter notebookの起動の仕方
これまでと一点大きく違うことがあるので、解説しておきます。
大きく違う点とは、Jupyter notebookの起動の仕方です。
これまではAnacondaを起動し、その中のツールとしてJupyter notebookを起動していました。
しかしこれからはJupyter notebookを単体で起動する必要があります。
ただ先ほどpipでJupyter notebookをインストールしたとはいえ、起動のためのアイコンができるわけではありません。
現状ではターミナルを起動し、「jupyter notebook」をタイプし、エンターを押すと起動します。
大した手間ではありませんが、せっかくなので次回、ダブルクリックで実行できるように設定していくことにしましょう。
ではでは今回はこんな感じで。
コメント