最近のPython環境構築について調べてみた

きっかけ

何周遅れの記事なので、参照多めのメモ記事。

最初に結論

答えはない。自由にやればいい。

  • 便利さ重視
    • 最新のPythonをパッケージ管理で導入する
    • 仮想環境はvenvを使う
  • 必要性重視
    • pyenvでPythonを入れる
    • virtualenv or venvを使う
  • 環境とかどうでもいい
    • Anaconda



問題

強力なライブラリ郡を持つPythonですが、環境構築の混沌はライブラリがサポートするPython Versionが千差万別なためです。
たった一つのライブラリを使うためにPython2を選ぶこともあります。最近のライブラリは3.6以上しかサポートしていないものもあります。

このため、使いたいライブラリーに合わせて複数のPythonVersionを管理と、仮想環境をもつ必要があり、環境構築に対して様々な手法が存在しているのが、現在のPythonの状況だと認識しています。

一方、この状況は去年あたりから改善してきています。Python2が2020年にサポートが切れることを受けて、Python3への移行が上手く進んでいるのでは?と考察しています。

Python3.3より仮想環境コマンドが実装されたので、この状況は更に改善していくと思います。
参考:venv — 仮想環境の作成

複雑化している環境構築

5年ほど前に機械学習を行っていた人間は、ライブラリ依存に苦しんだ人が多いと思います。
参考:Pythonの環境構築を自分なりに整理してみる

その状況を一変したのが「Anaconda」です。
WindowsPython=Anacondaは、現在も変わっていないと思います。


Anacondaは、Python(機械学習など)を固めたパッケージセットになります。Anaconda上で仮想環境を構築し、PythonVersionを設定することが可能です。 このため「環境とかどうでもいいから、Pythonで試したい」人にとっては強力な価値を提供します。
参考:Anaconda は Environment Isolation Tool (環境分離ツール) ではない


一方、Anacondaには毒も多く、LinuxMACでは色々問題も起きます。
参考:Pythonの環境管理ツール良し悪し
参考:pyenvが必要かどうかフローチャート
参考:condaとpip:混ぜるな危険


上記のような問題を避けるためには、ライブラリなどを的確に構築したほうが効率が良いケースもあります。その場合は、pyenvなどを利用する形式となります。

結局、どのように考えるのか?

Pythonの環境構築におけるポイントは2点。

  • pythonの管理をどうするか?
  • ライブラリの管理をどうするか?

上記観点について、渋川さんのまとめたQiitaの記事が一番良かったです。
参考:pyenvが必要がどうかフローチャート



Pyenvの魅力はPythonのVersionを細かく管理できるところにあります。
Pyenv+env(virtualenv)のセットが、Python開発者の主流になると思います。
参考:仮想環境とパッケージ

参考:venvを使ったmacOSのPython開発環境2016



私は、家プログラミングで遊ぶときは、最新ライブラリと最新Pythonで遊びたい欲があります。最新VerのPython入れたい=>Pyenvでまた環境つくるのは、正直面倒臭い・・・・。

このため、Python環境構築の便利さを求め、 Python2系と、最新のPython3を反映しやすい環境にすることにしました。
以下の記事が参考になります。
参考:Pythonの環境設定でむかついてる人はとりあえずこれをコピペで実行してください 2017.01
参考:Pythonを正しくインストールする  


一方、WindowsPythonを使いたい人は、Anacondaで良いと思います。
厳密に管理したい人は、上記各リンクをたどれば答えがあります。
参考:Anaconda で Python 環境をインストールする

以降は、MACで環境整えたときのメモになります。

pyenv uninstall anaconda2
pyenv uninstall anaconda3
brew uninstall pyenv
brew uninstall --ignore-dependencies python
brew uninstall --ignore-dependencies python3
brew uninstall --ignore-dependencies python2
rm -rf anaconda

brew installでエラーが発生したので、この解決法を利用

sudo mkdir /usr/local/lib
sudo mkdir /usr/local/include
sudo mkdir /usr/local/Frameworks
sudo mkdir /usr/local/Frameworks/Python.framework
sudo chown -R $(whoami) $(brew --prefix)/*
brew install python3
brew install python2

virtualenv(python3.3未満)

Pythonの仮想環境を構築できるvirtualenvを使ってみる

venv

参考:venv — 仮想環境の作成
参考:venv: Python 仮想環境管理

cd [project folder]
mkdir venv
python3 -m venv [newenvname]
source [newenvname]/bin/activate

Errorがでる

DEPRECATION: The default format will switch to columns in the future. You can use --format=(legacy|columns) (or define a format=(legacy|columns) in your pip.conf under the [list] section) to disable this warning. pip (9.0.3) setuptools (39.0.1) You are using pip version 9.0.3, however version 10.0.1 is available. You should consider upgrading via the 'pip install --upgrade pip' command.


Installation pip

pip install -U pip

エキスパートPythonプログラミング 改訂2版 (アスキードワンゴ)

エキスパートPythonプログラミング 改訂2版 (アスキードワンゴ)

独学プログラマー Python言語の基本から仕事のやり方まで

独学プログラマー Python言語の基本から仕事のやり方まで

12歳からはじめる ゼロからの Pythonゲームプログラミング教室

12歳からはじめる ゼロからの Pythonゲームプログラミング教室

PythonユーザのためのJupyter[実践]入門

PythonユーザのためのJupyter[実践]入門