スポンサーリンク



2019年01月24日

AI/機械学習講座(3):Python は極力 venv / pipenv で仮想環境を作って利用すべし

Ubuntu上でPython環境を構築する

 ども勉三です。「AI/機械学習講座」の第三回目。前回までに Ubuntu のセットアップを済ませたので、今回はいよいよUbuntu上での環境構築に入っていきます!

Ubuntuには最初からPythonはインストールされている

 Python の環境構築といっても、実は Ubuntu には Python が標準でインストールされています。確認のため、Ubuntu上でターミナルを起動し、下記のコマンドを入力してみましょう。python がインストールされていればバージョンが表示されるはずです。

Python 2.x の場合(結果は例)

$ python --version
Python 2.7.15rc1

Python 3.x の場合(結果は例)

$ python3 --version
Python 3.6.7

 Python は2系(2.x)と3系(3.x)で大きく言語仕様が変わっており、プログラムも別になっています。ターミナルで python と入力すると2系、python3 と入力すると3系のプログラムが起動するようになっています。

 1つの環境に2系と3系を同居させることも可能で、最初から両方インストールされていることも多いので、上記の両方のコードを試してみてください。

いきなり pip install でパッケージをインストールしたりアップデートするのはダメ

 さて、ここからが大事なのですが、初心者がインターネットや書籍の解説を見ながら Python を始める場合、いきなり pip install でパッケージをインストールしたり、あるいは既に入っているパッケージをアップデートしようとしたりすることが多いです。これはやめてください。

 Python では1つ1つのプロジェクトごとに仮想環境を構築し、その仮想環境の中に必要なパッケージだけをインストールするのが基本です。少しややこしいですが、ここでの仮想環境とは「Windows 上で VirtualBox を用いて仮想の Ubuntu 環境を動かす」といったよく使われる仮想環境とは意味が異なり、Python が動作する時にプロジェクトのフォルダだけに入ったパッケージが全てであると思わせるような、一種の隔離空間になります。

 なぜこのような仮想環境が必要かというと、Python はパッケージ管理が非常に複雑で不具合を引き起こしやすいからです。これは様々なパッケージを用いることができるという Python の強みの裏返しのようなものと言えます。例えば、おおもとの Python に対して何かカスタムパッケージをインストールした結果、これまでは問題なく動いていたプログラムが動作しなくなるということがありえるのです。

 その場合、仮想環境を使っていなければ Python やパッケージを全てアンインストールして、原因を究明していかなければならない可能性があります。一方で、仮想環境を使っていれば、何かあったとしてもその仮想環境を削除すればいいだけです。そもそも、ある仮想環境にインストールしたパッケージが、別の仮想環境に影響を与えることも無いので、そのような必要性も限りなくなくなります。

Anaconda も無闇に入れない方がいい

 あと特に日本語で出ている Python 入門書によく見られますが、Anaconda というディストリビューションのインストールが推奨されていることが多いです。これも無闇にインストールしないほうがいいです。

 確かに、数値演算/機械学習関連のパッケージがプレインストールされており、conda というパッケージマネージャがついていて便利ではあるのですが、現在は python 標準の pip や venv が機能強化されてきており、そちらを使った方がいいです。Anaconda は Python 標準のパッケージが貧弱だった時代の名残です。

 pip と conda の併用の危険性に関しては、こちらのブログ記事「condaとpip混ぜるな危険」なども参考にしてください。

Python 仮想環境の作り方

現在の仮想環境標準パッケージである venv を使おう

 仮想環境の作り方ですが、python のバージョンによってデファクトスタンダートとして推奨されている方法が異なっており少々ややこしいのですが、Python 3.6 以降では venv というパッケージを使うことが公式で推奨されています。venv は Python 3.3 以降であれば最初から入っているので、特にパッケージをインストールしなくても利用可能です。

 なお、venv の他に pipenv というものが2018年に登場し、新たなデファクトスタンダードの地位になりつつありますが、これは裏で動作しているのは pip や venv などの既存のパッケージです。最初から pipenv を使って勉強することも可能ですが、まずは裏で動いている個々のパッケージの動作を理解した方が分かりやすいと思うので、本講座では仮想環境には venv、パッケージ管理には pip を使いたいと思います。

 この他にも virtualenv, pyenv など過去のものも含めると様々な仮想環境パッケージが存在しています。ネット上で「Python 仮想環境」とだけ検索すると、これらの使用例も引っかかってくるので、必ず記事が何のパッケージについて書かれたものなのか確認しましょう。

まとめ&次回予告

 今回の内容をまとめると「anaconda は無闇にインストールしないで」「仮想環境は venv を使って」ということになります。単純なことですが、たぶん何もわからずに Python を始めた人は、ハマりやすい落とし穴だと思います。

 長くなったので venv や pip を使った、本格的な Python 環境構築は次回に回したいと思います。

スポンサーリンク




posted by 勉三 at 21:32 | Comment(0) | TrackBack(0) | IT
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/185433856
※ブログオーナーが承認したトラックバックのみ表示されます。

この記事へのトラックバック