Site cover image

Site icon imageExcelおさるくんのastro-notion-blog

VBA / Python / Notion / AIによる業務効率化とデータサイエンスに関する情報を発信しています!

Post title icon"Pythonの環境構築を振り返ります:第1回 - カレールウとAnaconda!?”

Featured image of the post

1️⃣ はじめに

新年度がスタートしましたね🌸

出会いの春、進級、昇格、異動、転居、新卒、新入学…

引っ越しなどで環境の変化があった方も多いかと思います。

Image in a image block

かくいう私も、仕事や生活面では特に変わりはないのですが、

これまで何となくしっくり来ていなかったPythonの開発環境を見直して、快適なプログラミング新生活を送りたいと思い、この記事を書いています。

私は、チーム開発をしているわけではなく、一市民開発者ですので開発環境に特にこれといったこだわりはありませんが、これまでPythonを学習する上で、いくつかの環境を試してみてそれぞれの使い勝手や問題点など気づきがありましたので、今日はその辺りについて今一度整理して皆さんに共有してみたいと思います。

これまでの私のPythonの開発環境の変遷
No.環境主な特徴利点
1Anacondaデータサイエンスと機械学習向けのPythonディストリビューション。
多数のライブラリが含まれる。
多数の科学計算ライブラリが含まれており、設定が容易。
2Google ColabクラウドベースのPython実行環境。
GPUやTPUの利用が可能。
無料で高性能な計算リソースが利用可能。
設定不要で手軽に使える。
3Dockerアプリケーションをコンテナ内で実行するためのプラットフォーム。環境の再現性と移植性が高く、
様々なシステムで同じ環境を作れる。
4Python in ExcelExcel内でPythonスクリプトを実行するためのアドオンやツール。Excelデータを直接Pythonで扱える。
ビジネスシーンでのデータ処理に便利。
5ASDF + PoetryASDFは複数のランタイムを管理するツール、Poetryは依存関係の管理とパッケージングを行うツール。複数のPythonバージョンと依存関係を簡単に管理できる。
開発環境の構築が容易になる。

2️⃣ Pythonとの出会い

合格体験記の中でお伝えした通り、私は2022年、コロナ禍で自粛生活が余儀なくされていたときに、リスキリングの一環としてPythonを学び始めました。

Post title icon in a page linkArrow icon of a page link【合格体験記】Python3エンジニア認定基礎試験:2024年春 一歩先へ進むための新たな挑戦

Python学習者の方ならばきっと共感いただけると思いますが、Python学習で最初に立ちはだかる壁が環境構築やエディター選びだと思います

Image in a image block

私は、Pythonの前に1年ほどExcel VBAの学習経験がありました。

VBAの場合、Excelに統合されているエディターであるVBEAlt + F11というショートカットキーでさっと立ち上がり、すぐにコードの入力が可能なため開発環境を意識することはありません。

一方でPythonはPyCharm、VSCode、Google Colab、Sublime Text など、エディターの選択肢が豊富にあります。

というか、あり過ぎて迷ってしまいます…笑

print(’Hello World’)までたどり着くのも一苦労です…^^;

  • 開発環境の構築方法は?
  • どのエディターを使うのが良いのだろう?
  • 初学者にとってのおすすめのコーディング環境は?

色々と頭を悩ませていたところ、当時書店で手に取ったのが日経ソフトウェアという雑誌でした。

Pythonの書籍は複数ありどれを買おうか迷っていた中で、ふらっとIT関連コーナーで見つけたのがこの雑誌でした。

今でも大変お世話になっています。

雑誌の情報であれば、きっと開発環境のトレンドを知ることができて、かつ一般の方に広く受け入れられている内容であるだろうという思いがありました。

そして結果として、日経ソフトウェア2022年3月号の書籍で紹介されていたVisual Studio Code × PythonでPythonデビューを果たすことができました!

Image in a image block

3️⃣ AnacondaでPythonデビュー

こちらの雑誌で紹介されていたのはおすすめパッケージ全部入りのAnacondaでした。

🐍
Anacondaとは?

Anacondaは、データサイエンスと機械学習のためのPython開発環境です。Anacondaをインストールすると、Pythonも一緒にインストールされます。AnacondaはPythonのディストリビューションであり、Python本体に加えて、データサイエンスや機械学習でよく使用される多数のライブラリやツールが含まれています。そのため、Anacondaをインストールすれば、個別にPythonをインストールする必要はありません。

カレールウとAnaconda

突然ですが、みなさんはどんな風にしてカレーを作りますか

一般的には、

刻んだ玉ねぎ、ニンジン、ジャガイモと鶏肉や豚肉を鍋で炒め、野菜が柔らかくなったら、水を加えて煮込み市販のカレールウを入れて溶かし、味がなじむまで煮込んだら完成です。

そう、Anacondaは市販のカレールウのようなものなんです!?

Image in a image block

カレールウには、味やうま味、とろみをつける成分があらかじめ入っていて、煮込んだ肉や野菜にカレールウを加えるだけで簡単においしいカレーを作ることができます。

そんなカレールウのように、

AnacondaもPythonや主要なライブラリ、便利ツールあらかじめ入っていて、インストールするだけで簡単に開発環境を作ることができます

カレーが食べたくなってきましたねw

初学者の方の場合は、あれこれ考えずにAnacondaさえ入れておけばPythonが書けちゃうんです!

私がまさにそうでした!

こちらの雑誌のメインテーマはVSCodeを使ったデータ分析手法のチュートリアルでしたが、初学者の方でもわかるようにハンズオン形式でAnacondaの導入方法が紹介されていました。

Anacondaの導入手順
  1. Anacondaをダウンロード
  2. ダウンロードしたインストーラーを実行
  3. デフォルト設定のまま指示に従い「次へ」ボタンを押し進めていけば完了です。

とても簡単ですね!

なお、データ分析でよく使用する以下のようなモジュールはAnacondaのベースの環境に入っているので、インストールの作業は不要です。

  • Numpy
  • Pandas
  • Matplotlib
  • Seaborn

機械学習のライブラリも入っています。

  • Scikit-learn
  • TensorFlow
  • PyTorch

便利ですねー!

また、記述したコードの実行結果をすぐに確認可能なJupyter Notebookの実行環境のパッケージまで付いてきます。

嬉しい!!

あとは分析したい素材さえ用意すればおいしいカレーが出来ちゃいますw

Image in a image block

そして、雑誌の記事の続きにはVSCodeの導入方法と拡張機能の使い方が紹介されていました。

4️⃣ Anaconda × VSCodeでPythonを操作する

Icon in a callout block
VSCodeとは?

Visual Studio Code(VSCode)は、Microsoftによって開発された無料のソースコードエディタです。Windows、macOS、およびLinuxで動作し、主にウェブ開発やソフトウェア開発に広く使われています。VSCodeはその多機能性、柔軟性、使いやすさから多くの開発者に支持されており、現在最も人気のある開発環境の一つです。

VSCodeのセットアップ
  1. 下記のURLから自身のパソコンの環境にあったインストーラーをダウンロードします。
  2. ダウンロードしたインストーラーを実行します。
  3. VSCodeを起動します。

拡張機能の追加

初回起動時は英語表示であるため日本語設定の拡張機能を追加します。

Image in a image block

Icon in a callout block
拡張機能とは?

Visual Studio Code(VSCode)の拡張機能は、エディタの機能を強化し、カスタマイズするために使用される追加のコンポーネントです。これらの拡張機能により、VSCodeの基本的な機能を超えて、さまざまなプログラミング言語のサポート、コードデバッグ、バージョン管理ツールの統合、テーマやスニペットなどを追加できます。

また、VSCodeでPythonを使った開発をする場合、インストール必須の「Python」という拡張機能があります。

Pythonの構文チェックをしてくれるIntelliSenseやソースコードの静的解析、デバッグの機能などが含まれている、高機能な拡張機能です。

Image in a image block

PythonをインストールするとPylanceJupyterという拡張機能も一緒にインストールされます。

Pylance
Image in a image block
  • Pylanceはpythonの言語サーバーのひとつで、コードの自動補完やシンタックスハイライトをサポートします。インストールするだけで、Pythonのコードを書きやすくしてくれます。

Jupyter
Image in a image block
  • Jupyterはソースコードとその実行結果などをノートブックという呼ばれる形式でまとめて表示できる拡張機能です。つまり、Jupyter NotebookをVSCode上で利用できる拡張機能です。

ここまで環境を整えてしまえば、あとはPythonの学習に集中できちゃいます!

ここからは、書籍で紹介があり現在も使用している便利や拡張機能を少しご紹介します。

Edit csv
Image in a image block
  • Edit csvはCSVのデータを表形式で表示し、編集もできちゃう拡張機能です。

Rainbow CSV
Image in a image block
  • Rainbow CSVはCSVを見やすく表示し、編集しやすくする拡張機能です。インストールするだけで、VSCode上で開いたCSVを列ごとに色分けします。

Excel Viewer
Image in a image block
  • Excel ViewerはCSVやExcelファイルを開くことができる拡張機能です。VSCodeでは通常Excelファイルを開くことは出来ませんがこちらの拡張機能をいれることでエクスプローラーからExcelファイルをクリックするだけで表内のデータを参照できます。

このように、VSCodeを使用するとプレーンなJupyter Notebookで運用するよりも便利な拡張機能が使用できるため、学習も捗ります!

5️⃣ Anacondaで仮想環境を利用する

そして、Anacondaではconda activate というコマンドを使用して venvのような仮想環境も利用可能です。

とはいうものの…

実は私はあまりAnacondaで仮想環境を利用したことがないため、ここでは簡単な手順のご紹介に留めたいと思います。

仮想環境の構築方法
  1. Anaconda Promptまたはターミナルを開く: Windowsでは「Anaconda Prompt」を、macOSやLinuxでは通常のターミナルを開きます。

  2. 新しい環境を作成:ここでmyenvは環境の名前、python=3.8はインストールしたいPythonのバージョンです。
    conda create --name myenv python=3.8

  3. 環境をアクティベート:
    conda activate myenv

  4. 必要なパッケージをインストール:例としてnumpyをインストールしていますが、必要に応じて他のパッケージ名を指定します。
    conda install numpy

仮想環境の利用
  • アクティベート: conda activate myenvで特定の環境をアクティベートします。
  • ディアクティベート: conda deactivateで環境をディアクティベートします。

仮想環境の管理
  • 環境のリスト表示: conda env listまたはconda info --envsで現在の環境一覧を確認できます。
  • 環境の削除: conda env remove --name myenvで特定の環境を削除します。

以上がAnacondaを使用して仮想環境を作成・管理する基本的なプロセスです。

さまざまなパッケージを環境に合わせて管理できるため、Pythonプロジェクトの開発において非常に有効です。

そんな何でも出来てしまう便利なAnacondaですが…

今現在、私は別の環境でPythonを利用するようになりました。

次はなぜAnacondaを卒業しようと思ったか、その理由をお話していきます。

6️⃣ Anacondaからの卒業

Anacondaを利用しなくなった理由は大きく3つあります。

これは私の面倒くさがりな一面と知識不足によるところでもあるので、必ずしもAnacondaが悪いわけではないことを予めお伝えしておきます…笑

1. condaとpipは混ぜるな危険!?

先程の仮想環境のコードにも出てきましたが、Anaconda環境でパッケージをインストールする場合は、以下のように原則condaコマンドを使用する必要があります。

conda install numpy

というのも、condapipはそれぞれ異なるパッケージリポジトリを利用しているからです。

condaはAnacondaリポジトリを、pipはPyPIでパッケージリポジトリを利用します

このため、同じパッケージでも、それぞれのツールからインストールされるバージョンや依存性が異なることがあります

そして、pipにはあってcondaにないというパッケージも多数あります。

なぜ、pipにあってcondaにないのか?
  1. パッケージソースの違い:

    pipはPython Package Index(PyPI)からパッケージを取得し、このリポジトリは非常に広範なパッケージを含んでいます。一方、condaのパッケージはAnacondaリポジトリまたはConda-Forgeなどの特定のチャンネルを通じて提供されます。これらのリポジトリにはPyPIほどの幅広いパッケージが含まれていない場合があります

  2. パッケージ管理の違い:

    pipはPython専用のパッケージマネージャーであり、Pythonに特化しています。一方で、condaはPythonに限らず、他の言語やシステムツールのパッケージも扱うため、Python特有の一部パッケージが含まれていないことがあります

  3. パッケージの更新頻度:

    PyPIはコミュニティ主導で、開発者が直接パッケージをアップロード・更新するため、最新のパッケージが迅速に利用可能になることが多いです。一方、condaのパッケージはリポジトリによる審査やビルドプロセスを経る必要があるため、更新がpipに比べて遅れることがあります。

というのが理由のようです。

「condaとpipを混ぜるな危険」という表現は、Pythonのパッケージ管理ツールであるcondapipを同時に使うことによって生じる問題を指しています。

Image in a image block

具体的な問題点について説明します。
  1. パッケージ依存性の問題:
    • condaはパッケージの依存性を管理する際、Pythonパッケージだけでなく、システムライブラリや環境設定も考慮に入れます。これに対して、pipはPythonパッケージの依存性のみを考慮します。したがって、condapipを混在させると、相互の依存性がうまく解決されない可能性があります。
  2. 環境の壊れやすさ:
    • condaは独自の環境管理機能を持っており、pipと組み合わせて使用すると、環境が壊れるリスクが高まります。例えば、pipでインストールしたパッケージがcondaの管理下にないため、condaがその環境の全体像を正確に把握できなくなる可能性があります。
    • これは、特に複雑な依存関係を持つパッケージや、システムレベルのライブラリを必要とするパッケージを扱う場合に顕著です。
  3. 更新と整合性の問題:
    • condapipを併用すると、どちらのツールを使っても更新できるパッケージが存在するため、どちらで更新されたかによってパッケージの整合性が保たれなくなることがあります。
    • 例えば、condaでインストールしたパッケージをpipでアップデートした場合、その逆の場合に比べて問題が発生しやすいです。これは、condaがパッケージ間の依存性を管理しているため、pipによる更新が依存性の不整合を引き起こす可能性があるからです。

対処法
  • 一般的には、一つのプロジェクトにつき一つのパッケージ管理ツールを使用することが推奨されます。
  • condaを使用する場合は、可能な限りcondaを通じてパッケージをインストールし、必要がある場合のみpipを使用するようにします。
  • 仮想環境を活用し、プロジェクトごとに隔離された環境を作成することで、依存性の問題を最小限に抑えることができます。

これらの問題を理解し、適切に対処することで、Python開発環境の安定性と整合性を保つことができます。

condapipを混ぜて使う様々な問題点は上記のトグル内をご覧いただくか、または、ネットに詳しく解説されている情報が多数ありますのでそちらでご確認いただくとして…

端的に言えば、管理が面倒くさくなってしまったんです!!笑

上記の対処法にある通り、新しいパッケージをインストールするたびに毎回condaでインストールできるか確認したり、プロジェクトごとにconda activateで仮想環境を切り替えたり(今は別のツールを使って分けるようにしています)するのって結構大変ですよね…笑

できるだけラクにPythonを使いたいと思ったのがAnacondaを卒業しようと思ったきっかけでした。

2. TensorFlowを使ってみたかったな〜

Anacondaの卒業を決めるよりもだいぶ以前のことです。

TensorFlowという機械学習のライブラリを使ってみたいと思い、書籍を見ながらコードを書いて動かしてみたのですが、関連ライブラリのimportの段階でエラーが出て進まなくなってしまいました。

何が原因なのだろうと色々調べているうちにあることに気づきます。

そう、実は私、Anacondaの使い方をよく知らないままに運用しちゃってたんです…笑

実際にcondaで運用する以前に、あまり理解しないままにpipバシバシインストールしちゃってたんです^^;

時すでに遅し…開発環境がグチャグチャになってしまっていました…笑

TensorFlowが使えなかった考えられる理由

1. 依存関係の問題

  • 衝突: condaとpipでインストールされたパッケージ間で依存関係の衝突が発生する可能性があります。これにより、TensorFlowや関連ライブラリの一部が正しく動作しない場合があります。
  • 非互換性: TensorFlowには特定のバージョンの依存パッケージが必要です。pipとcondaのパッケージ管理の違いにより、互換性のないバージョンがインストールされることがあります。

2. TensorFlowのインストール

  • 最新バージョン: condaリポジトリは、TensorFlowの最新バージョンの提供に時間がかかることがあります。pip経由で最新版をインストールした場合、conda管理下の他のパッケージとの整合性を欠く可能性があります。
  • CUDAとの互換性: TensorFlowは特定のCUDAバージョンとの互換性が必要です。condaとpipを混在させると、正しいCUDAバージョンとの整合性を確保するのが難しくなることがあります。

3. 環境の不安定さ

  • パッケージの上書き: condaとpipを併用すると、一方でインストールしたパッケージが他方で上書きされる可能性があります。これにより、不安定な環境が作り出され、エラーや予期せぬ挙動が発生することがあります

解決策
  1. 環境の再構築:

    新しいconda環境を作成し、必要なパッケージを可能な限りcondaを使用してインストールする。TensorFlowcondaで利用できない場合は、pipを使用する前にcondaで必要な他のパッケージをすべてインストールしておく。

  2. バージョンの確認:

    TensorFlow及びその依存パッケージの互換性あるバージョンを確認し、適切にインストールする。

  3. CUDAの整合性確認:

    TensorFlowが要求するCUDAバージョンを確認し、適切にインストールする。

上記の解決策を講じればうまくいくのでしょうが、やはり面倒くさがりの私は他の環境構築の方法で0からスタートすることを決意しました

Image in a image block

3. Pythonのメジャーアップデートってどうやるのよ?

最後にもうひとつネックになっていたことがあります。

私が学習を始めた頃はpython3.9が主流でした。現在はpython3.12までリリースされています。

私の知識不足によるものが大きいのですが、当時、python3.10に導入されたMatch関数を使いたかったのですが、pythonのメジャーアップデートのバージョンを上げる方法がわからず断念した経緯があり、これも他の開発環境に切り替えた大きな理由のひとつでした。

AnacondaでのPythonのメジャーアップデート
  • バージョン管理: Anacondaでは、Pythonのバージョンを管理するプロセスが標準のPython環境と比較して複雑な場合があります。特に、既存の環境内でPythonのメジャーバージョンをアップグレードすることは推奨されていません(例:Python 3.7から3.8へのアップグレード)。これは、依存関係の問題や環境の破損を避けるためです。
  • 最新バージョンへの対応遅れ: Anacondaが新しいPythonリリースに対応するのに時間がかかることがあります。これは、最新のPython機能や改善をすぐに利用したい開発者にとっては不便です。

既存のAnacondaのアップグレードが難しくても、今あるものをアンインストールして、新しいバージョンのAnacondaをインストールすればできる(はず)と思い、ChatGPTに聞いてみたところ教えてくれました。

(既存の環境のアップグレードもできるみたいです!)

当時、ChatGPTがあればなあ〜、Anacondaから卒業しなかったかも笑

AnacondaでPythonのバージョンを上げる方法は主に以下の2つのアプローチがあります。

適用する前に、既存の作業環境が新しいバージョンのPythonと互換性があることを確認してください。

方法1: 新しい環境の作成

Anacondaを使用して新しい仮想環境を作成し、そこに新しいバージョンのPythonをインストールするのが一般的です。これは最も安全な方法です。以下の手順に従ってください。

  1. 新しい環境の作成:
    conda create --name myenv python=3.x

    ここで、myenvは新しい環境の名前、3.xはインストールしたいPythonのバージョンです。

  2. 新しい環境のアクティベーション:
    conda activate myenv

    これにより、新しい環境がアクティブになります。

  3. 必要なパッケージのインストール:
    新しい環境では必要なパッケージがインストールされていない可能性があるため、必要に応じてインストールします。

方法2: 既存の環境のアップグレード

既存の環境でPythonのバージョンをアップグレードする場合は、以下の手順に従います。ただし、これは依存性の問題を引き起こす可能性がありますので注意してください。

  1. 環境のアップグレード:
    conda update python=3.x

    ここで、3.xは目指すPythonのバージョンです。

  2. 依存関係の確認:
    アップグレード後、依存性が適切に解決されたかを確認します。必要に応じて追加のパッケージをインストールまたはアップデートする必要があります。

注意事項
  1. バックアップ:

    アップグレード前に既存の環境のバックアップを取ることを推奨します。

  2. 互換性:

    特に既存の環境をアップグレードする場合は、使用しているパッケージが新しいバージョンのPythonと互換性があるか事前に確認してください。

  3. 仮想環境:

    仮想環境を使用することで、システム全体のPython環境を変更することなく、特定のプロジェクトに特化した環境を維持することができます。

これらの手順を適切に実行することで、Anacondaを使用してPythonのバージョンを上げることが可能です。

Image in a image block

7️⃣ おわりに

ここまでお読みいただきありがとうございました!!

色々書いてきましたが、

カレールウのように手軽に利用可能なAnacondaは初学者の方にとって大変おすすめの開発環境の一つだと思います!

私がAnacondaを卒業したのは、

言うならば、

カレーを作り続けているうちにカレールウに頼るのではなく、自分好みのスパイスを使いたくなったり、違った辛さのカレーが作りたくなってきた

つまり、

コードを書き続けているうちにAnacondaに頼るのではなく、0からパッケージをインストールしたり、仮想環境を切り替えて環境構築したくなってきた

ことが理由です!!(決まった…!)

嘘です…笑

(エイプリルフールなので…)

若干はそんなところもありましたが、実際はそんなかっこいい話ではなく、知識不足によるところが大いにあります。

というか、ほぼそれが理由です…^^;

ただ、Anacondaを卒業してからわかったこともあります。

私のように、直接ローカルにAnacondaをインストールするとしっかり管理をしていないと将来的に支障も出てしまうかもですが、他の環境と組み合わせることで開発環境を汚さずに利用することも可能です。

実際、データ分析の学習などでは、Docker × Anacondaのような方法でコンテナ内にインストールされているAnacondaを利用するケースもあります。

いずれにしても、いきなり完璧な環境構築はできません。

Pythonを学びながら、同時に自分にあった開発環境をじっくり作っていくことが大切であると感じています!

ぜひ、皆さんも私と一緒に理想の開発環境を求めて環境構築を楽しみましょう!!

思い出しながら書きたいことをとにかく書いていたら、予想以上に長くなってしまったため^^;

今回はAnaconda編ということで締めさせていただきます。

次回はGoogle Colaboratory編をお伝えできたらと思います!

この記事が良かったと思っていただけた方は、コメントといいねお待ちしております。