最近のPython環境構築について調べてみた
きっかけ
Python環境構築、今は何が主流なんだろう。
— エルク (@hogeai) 2018年6月9日
4年くらい前は、ライブラリ依存で地獄みて、部署全員Anaconda一択だったけど、流石に変わって来てるよね
何周遅れの記事なので、参照多めのメモ記事。
最初に結論
答えはない。自由にやればいい。
- 便利さ重視
- 必要性重視
- pyenvでPythonを入れる
- virtualenv or venvを使う
- 環境とかどうでもいい
- Anaconda
退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング
- 作者: Al Sweigart,相川愛三
- 出版社/メーカー: オライリージャパン
- 発売日: 2017/06/03
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (5件) を見る
問題
強力なライブラリ郡を持つPythonですが、環境構築の混沌はライブラリがサポートするPython Versionが千差万別なためです。
たった一つのライブラリを使うためにPython2を選ぶこともあります。最近のライブラリは3.6以上しかサポートしていないものもあります。
このため、使いたいライブラリーに合わせて複数のPythonVersionを管理と、仮想環境をもつ必要があり、環境構築に対して様々な手法が存在しているのが、現在のPythonの状況だと認識しています。
一方、この状況は去年あたりから改善してきています。Python2が2020年にサポートが切れることを受けて、Python3への移行が上手く進んでいるのでは?と考察しています。
Python3.3より仮想環境コマンドが実装されたので、この状況は更に改善していくと思います。
参考:venv — 仮想環境の作成
複雑化している環境構築
5年ほど前に機械学習を行っていた人間は、ライブラリ依存に苦しんだ人が多いと思います。
参考:Pythonの環境構築を自分なりに整理してみる
その状況を一変したのが「Anaconda」です。
WindowsでPython=Anacondaは、現在も変わっていないと思います。
Anacondaは、Python(機械学習など)を固めたパッケージセットになります。Anaconda上で仮想環境を構築し、PythonVersionを設定することが可能です。
このため「環境とかどうでもいいから、Pythonで試したい」人にとっては強力な価値を提供します。
参考:Anaconda は Environment Isolation Tool (環境分離ツール) ではない
一方、Anacondaには毒も多く、LinuxやMACでは色々問題も起きます。
参考: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を正しくインストールする
一方、WindowsでPythonを使いたい人は、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.
pip install -U pip
エキスパートPythonプログラミング 改訂2版 (アスキードワンゴ)
- 作者: Michal Jaworski,TarekZiade,稲田直哉,芝田将,渋川よしき,清水川貴之,森本哲也
- 出版社/メーカー: ドワンゴ
- 発売日: 2018/02/26
- メディア: Kindle版
- この商品を含むブログを見る
独学プログラマー Python言語の基本から仕事のやり方まで
- 作者: コーリー・アルソフ,清水川貴之監訳,清水川貴之,新木雅也
- 出版社/メーカー: 日経BP社
- 発売日: 2018/02/24
- メディア: 単行本
- この商品を含むブログ (1件) を見る
12歳からはじめる ゼロからの Pythonゲームプログラミング教室
- 作者: 大槻有一郎,リブロワークスPython部,雪印
- 出版社/メーカー: ラトルズ
- 発売日: 2017/05/11
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
- 作者: 池内孝啓,片柳薫子,岩尾エマはるか,@driller
- 出版社/メーカー: 技術評論社
- 発売日: 2017/09/09
- メディア: 大型本
- この商品を含むブログ (1件) を見る