2018年1月時点での、Pythonの環境構築(インストール、パッケージ管理、仮想環境)についての簡単な覚え書きです。何か間違っているところがあったらお知らせください。
- Pythonには2系と3系があり、互換性がありません。2系はバージョン2.7で打ち止めとなっていて、2020年でサポートが打ち切られます。
Pythonのインストール
そもそも各OSのパッケージ管理ソフトについて
- Linuxでは、UbuntuなどDebian系ではapt、CentOSなどRedHat系ではyum。yumはそのうちdnfとかいうのに移行するそうだ
- macOSではMacportsとHomebrewがあるけど、Homebrewのほうが流行っているのでHomebrewを使っておけば間違いなさそう
- 使い方についてはこの記事が詳しい: homebrewとは何者か。仕組みについて調べてみた
- WindowsにもChocolateyというパッケージ管理ソフトを導入できる。関係ないけど、最近のWindowsはコマンドプロンプトではなくPowerShellとかいうのを使うそうだ
各OSのパッケージ管理を使ったインストール
基本的に、「Pythonの環境設定でむかついてる人はとりあえずこれをコピペで実行してください 2017.01」 に従えば良さそう。
- Unix系OS(macOS含む)では、システムで使うためにだいたいPython 2が
/usr/bin/python
としてプリインストールされてる。これはシステムで使われているので、いじると大変なことになる。あと、バージョンが古い(2系の最新は2018年1月現在2.7.14) - macOSでは、2系が
brew install python
で入り、3系がbrew install python3
で入る。それぞれpython2
とpip2
、python3
とpip3
で使える - CentOS7では、
yum install https://centos7.iuscommunity.org/ius-release.rpm
でリポジトリを追加してから、yum install python36u python36u-pip python36u-devel
(数字36はPython 3.6の意味)で入る。python3.6
,pip3.6
で使える。develも入れておくと、jupyterでpython 2と3を共存させようとしたときに役立つ - Windowsでは、
choco install python
で3系の最新が入る。けれど、文字コードか何かの問題でpipが動かなかったりjupyterが起動しなかったりしたので、Windowsは諦めた。VirtualBoxでUbuntuなりCentOSなりを入れよう・・・ 。筆者の環境ではどれもうまくいかなかったけど、以下のような対策がある-
pip/compat/__init__.py
を手で書き換える(参考:
https://qiita.com/ruteshi_SI_shiteru/items/be6a58276bdbd67dc096, https://github.com/pypa/pip/pull/4280/files ) - Python 3.6以降で文字コードに関する挙動を変えたのが一因か。代わりに、3.6より前の例えば3.5.4を入れる(参考: https://github.com/pypa/pip/issues/4251 )
- pipは9が最新だけど、pip 10の開発版を
python -m pip install -U https://github.com/pypa/pip/archive/master.zip
で入れる(参考: https://github.com/pypa/pip/issues/4110 )
-
Pythonのパッケージ管理
公式のpipを使うのが無難。2系は2.7.9、3系は3.4から標準でPython本体に付属するようになった。
- CentOS7では、2系に対しては、
yum install epel-release
でリポジトリを追加してから、yum install python-pip
で入る
使い方
-
pip install {package}
パッケージのインストール-
pip install {package}=={version}
指定したバージョンのパッケージをインストール -
pip install -U {package}
パッケージのアップデート。pip自身に対してもできる -
pip uninstall {package}
パッケージのアンインストール
-
-
pip freeze
インストールされたパッケージの一覧-
pip freeze > requirements.txt
として出力しておけば、pip install -r requirements.txt
でその一覧をインストールできる
-
-
pip show {package}
あるパッケージについて詳しく見る
入れておくとよいパッケージ
-
jupyter
,jupyterlab
インタラクティブコーディング環境 -
scipy
科学計算。numpy
も自動で入る -
pandas
データ分析 -
matplotlib
グラフを描く -
scikit-learn
機械学習 -
flake8
コードをチェックする。以下の3つのラッパ-
pyflakes
文法や不要な部分のチェック -
pycodestyle
(旧名pep8
) Pythonのコーディング規約PEP8を守っているかチェック -
mccabe
プログラムの複雑さをチェック
-
conda系について
データ分析ではAnacondaやMinicondaといったconda系ディストリビューションに含まれるパッケージ管理機能も便利だけれど、公式で決められたwhl形式ではない独自の形式を使っていることについて議論になっているように見える。他にも、bashが前提になっててzshだと困るなどの副作用があるようだ。
-
conda系について
-
conda系に対する苦言
仮想環境
Pythonに入れておくパッケージのセットを、状況に応じて好きに切り替えられるようにする機能。公式のvenvを使うのが無難っぽい。これは、virtualenvというやつがPython 3.3から公式に取り込まれたもの。pyvenv
コマンドで呼び出す方法は非推奨になった。代わりに、venv
コマンドを使う。
-
python -m venv {dir}
仮想環境ディレクトリを作る- オプション
-m
は、ライブラリモジュールをスクリプトとして実行する - ディレクトリがなければ作ってくれる
- 2系には
venv
が無いので、pip install virtualenv
してvirtualenv {dir}
を代わりに使う
- オプション
-
source {dir}/bin/activate
その仮想環境を有効化する。プロンプトに仮想環境名が表示されるようになる。一時的に環境変数$PATHに{dir}/bin
が一番左(一番優先順位が高い)に追加され、python
,pip
コマンドでその仮想環境のpython, pipを実行するようになる- Windowsでは、
{dir}\Scripts\activate.bat
- bashで書かれているので、fishシェルでは代わりに
source {dir}/bin/activate.fish
とする -
source
は.
でもいい
- Windowsでは、
-
deactivate
仮想環境を無効化する
pyenvというのもあるけれど、これが本当に必要な人は限られてるっぽい。