Python環境を構築する前に考えておきたい事
巷には「Python インストール」といった検索をすることで簡単にPythonをインストールする方法を知ることができるけど、始める前に知っておいた方が良いこと・後からだとやり直しになることがあったのでまとめてみました。
どのバージョンを選択する?
Python Software Foundation(本家)のサイトでは、現在2.X系と3.X系のリリースバージョンがダウンロードできる。
2.X系の最新は 2.7.13、3.X系の最新は3.7.0となっている。(2018/08/01時点)
本家サイトのFQA(https://docs.python.org/3/faq/general.html#how-stable-is-python)では、2つのバージョンについて
以下のように言及されています。
There are two recommended production-ready versions at this point in time, because at the moment there are two branches of stable releases: 2.x and 3.x. Python 3.x may be less useful than 2.x, since currently there is more third party software available for Python 2 than for Python 3. Python 2 code will generally not run unchanged in Python 3.
訳すと、
「現時点では、2.x系と3.x系の安定版リリースの2つのブランチがあるので、2つの推奨バージョンが存在することになります。現在サードパティ製で利用可能なライブラリはPython 3よりもPython2の方が充実しているため、Python3.xは2.xよりも利用できない状況があるかもしれません。Python2のコードは一般的にPython3では変更なしに実行できないでしょう。」
みたいな感じです。
ちょっと情報が古いままなのかもしれません。現時点ではPythonの主要と思えるライブラリはPython3に対応していますので実際問題として困ることは少ないと思います。
ただ業務システム等でニッチなライブラリを使用している現場でPython3へのバージョンアップする場合は慎重に確認が必要でしょう。
結局「どのバージョンを選択するの?」という問いに対する答えは、これからPythonで開発する・学習するといった場合は Python3 一択です。
余程の理由がない限り、一から始める場合に Python2 を選択する理由はありません。
Python2系と3系の違いって何?
細かい違いをツラツラ書き連ねるとすごい量になるので、興味のある方は私も参考にさせてもらった下記サイトで詳細は確認してみてください。
見て頂くと分かるんですが、一番困るのが同じプログラムでも「エラーにならず」に「挙動だけ変わる」ものがあることですね。
せめて実行時にエラーにでもなってくれれば、動かないんだなと気づきますが、シレッと挙動だけ変わってた場合は気づかずに不具合を含んだままとなってしまう可能性があります。
Pythonの開発環境を構築する前に
さて、ここからが本題ではありますが、いざPythonの開発環境をを自分のマシンに導入する際は、今後どのような環境管理ツールを利用していくか最初に決める必要があります。
私は当初、書籍やネットの情報で言われるがまま環境構築を行ったため酷い目にあいました。(笑)
現在、Python の環境管理は以下のツールが主流です。
それぞれ微妙に利用目的が違いますが主にPythonの複数のバージョン管理やライブラリパッケージの環境(仮想環境)を切り替える目的で利用します。
- virtualenv
- pyenv
- venv
- pipenv
- Anaconda
結論からすると、私がやりたいのは「Pythonで機械学習!」ということでデータサイエンス向けに科学技術計算などのモジュールやツールがパッケージになった Anaconda を導入する決意をしました!
各ツールの詳細やメリット・デメリットについては下記のサイトが良くまとめられてるので、特に機械学習やデータサイエンスに関わらずPythonを学習したい方は一読されることをお勧めします。
まとめ
私は最初てきとーに巷の情報を参考に意味も理解しないままPythonの開発環境を構築した結果、相当な時間をそのトラブル対処に費やしました。
少なくとも本記事で書いたことを事前に検討して理解してから導入してたらもっとよかったのにとの後悔から書いてます(笑)
一番困ったのは Anaconda の conda コマンドと pip コマンドを混在してパッケージインストールとかしてたので、インストールしたのに conda 環境で動かないとか依存関係とかがスパゲッティになったことです。
- Python のバージョンは 3.x 系。特に問題がなければ最新のバージョンを利用する。
- 周りの情報に流されず正しく理解してデータサイエンス目的に使うなら Anaconda も良い。
では、後悔のない Python ライフをお楽しみください!
【初投稿】40代JavaエンジニアがPythonで機械学習の習得を目指します!
こんにちは。
このブログの管理人『TAKAYUKI』です。
【目次】
自己紹介
まずは簡単にプロフィールから
もともと仕事はWEB系Javaエンジニアだけど、最近は人工知能(AI)とか機械学習とかディープラーニングに興味を持ってます。
最近、人工知能学会にも入会しました。年会費一万円。結構、いやまぢで本気です!入会記念(?)に学会誌が送付されてきましたが、今のところ10分の1も理解できない・・・(汗)
でも最先端の研究内容でもあるので続けて読んでたら、「あれ?なんかこの話聞いたことある!」みたいな感動を得られるかとしばらく継続してみようと思います。
もともと根っからの理系出身なので趣味も機械系が好きです。でもここ数年は健康を考えてジョギングしたり、家庭菜園も含めたガーデニングに凝ってみたりで、やりだすとストイックに頑張るんですが、多趣味なのでよく「飽き性?」と聞かれたりします。
どこまで続くか分かりませんが、老後の趣味として続けるためにも(笑)頑張ってやっていこうと思います。 (老後は結構心配してる・・・)
夢
エンジニアで40代半ばとなるとプロジェクト管理なんてタスクも任されて、実装だけやってればよかった古き良き時代と半分おさらばしかけてたんだけど、1年ほど前から最近のディープラーニングによる第3次AIブームに乗っかる形でPythonエンジニアを目指すことにしました。(自分だけの宣言)
仕事は相変わらずJava系ONLYなので独学だけど・・・
なので夢ってほどではないけれども、これからのAI技術についていって60歳になっても最新のAI家電を使いこなして、孫やひ孫に「じいちゃん、すげー」っていってもらえるジジイになりたいと思います。
このブログについて
記事を書き続けるうちに変わっていくかもしれませんが、まずは本職の知識を生かしたプログラミング、特にAI関連の記事を中心に展開していきたいです。
でもカメラ趣味やガーデニングなど自分の趣味の話も息抜き程度に書いていきたいと思います。
機械学習について
さて、本題の「機械学習」にハマった経緯です。
最初はもともとJavaプログラマなので言語習得として敷居が低いJavaでやってみようかと思い「機械学習をJava」で説明してる書籍など購入してみたが、どうやら機械学習はPythonが主流らしいという現実にぶち当たる。
そもそも本職でCVSとか使ってたのでPythonスクリプト自体は知ってたけど、インタプリタ言語だしPerlみたいなもん?という認識しかなかった。
でも1冊が2冊になり、4冊、16冊と指数関数的に(笑)購入した書籍が増えるに従い、AIというか機械学習にとってPythonはある意味確固たる”エコシステム”となってる現実に気づいてPythonを本格的に勉強する気になってしまった。
最初は右も左も分からず、本家本元Python.orgでダウンロードして環境構築する。
しかし、世の中にはAnacondaディストリビューションというデータサイエンスや機械学習向けのパッケージが存在するじゃないですか?
ということで一から環境を作り直すこと数回。(また仮想環境とか分からないまま進めると本当に訳分からない)
pip("Pip Installs Packages")とかcondaとか混在したらダメだとか、おそらくPythonユーザには当たり前と思われる困難を乗り越えながら、現在はTensorFlow + Kerasでディープラーニングできるまでになりました。
私がハマったことの解決策などはこれから記事にして投稿してきますが、とりあえず機械学習のためにPython環境を構築する方はAnacondaディストリビューションをおすすめします!
では、これからもよろしくお願いします。