Pythonの使い方色々
今後解析やコーディングなどでPythonを使用しようと考えているので、そのためのcofigurationや使い方などをまとめる。(Mac用)
- Pythonとは...?
・Pythonとは、組み込み開発、WEBアプリケーション、デスクトップアプリケーションなどで使用される言語。AIや機械学習などでPythonが使われるケースが多く、最近人気の言語である。
・Pythonの特徴としては、
- 文法がシンプルで分かりやすい
- 専門的なライブラリが豊富
などがある。Pythonではデータ解析もでき、科学計算や数値解析などのライブラリが充実している。
- Pythonのインストール(Mac編)
・Macにインストールする方法として、主に3種類ある。1つ目がPythonの公式ページからダウンロードする、2つ目がHomebrewを用いたインストール、3つ目がHomebrewからpyenvというPythonのバージョン管理ができるパッケージをインストールし、pyenvを通してPythonwをインストールする方法がある。また例外として、Anacondaという解析に便利なパッケージが一括でインストールできるものがあるが、brewなどでインストールしたPythonとconflictなどを起こす可能性があるため、自分的には推奨しない。
ここでは、Homebrew→pyenvインストール→Pythonインストールの流れで説明する。他の方法については、適宜他のページを参照してほしい。
まず、Homebrewを用いてpyenvをインストールする。インストールしていなければ、先にHomebrewをインストールする。インストール方法は、brew install pyenvでできる。その後、インストールしたいPythonのバージョンを指定してインストールする。例えば、3.8.1をインストールしたければ、pyenv install 3.8.1というようにする。これで、ターミナル上でPythonと打った際に、きちんと起動されれば無事にインストールできたことになる。
※[追記]結局自分は、Python環境がちょっとぐちゃぐちゃになったので、一度全部アンインストールして、再度インストールし直した具体的にはローカルにはHomebrewからPython3.7.3を、仮想環境には、pyenvでPython3.8.1をインストールした。
・Homebrewでインストールする際に、brew info pythonと打つと、brewでインストールされるPythonのバージョンを確認することができる。2020/03/10時点では、Python 3.7.6がインストールされるようになっている。
brew install python3とすることで、インストール可能。インストール終了後ターミナルで、python3 --versionとし、Python 3.7.6と出ればインストールが成功している。
この時、同時にPythonのパッケージ管理ができるpip3というコマンドもインストールされる。パスは、/usr/local/binである。which python3, which pip3として確認するとよい。最初にインストールされるpip3は古いバージョンなので、pip3 install --upgrade pipとして、pip3を更新しておくこと!
Pythonのインストール(Ubuntu編)
・Ubuntuでpythonを使用するには、主に3通りのやり方がある。具体的には、①すでにインストールされているシステムのpythonの利用、②「pyenv」と呼ばれるツールを使用するやり方、③pythonのソースコードをダウンロードしてビルドするやり方。
何も考えなければ、システムのpythonを使用すれば良いのではないかと考えるが、色々いじってシステムに不具合をきたしかねないので、一般的にはシステムのpythonとは別の環境でpythonを使用するのが良い。よって、今回は②のpyenvを使用したpython環境構築と、③のソースからのビルドの方法について記載する。
②
そもそも、"pyenv"とは何か?だが、複数のバージョンのpythonを簡単に切り替えることができ、システムのpythonとは別の隔離された仮想環境でpythonを使用可能にするツールである。手順を以下に記す。
1. 現在インストールされているpyenvの消去(初めてのインストールであればこれは行う必要はない)
$ rm -rf ~/.pyenv
2. gitをインストールし、gitからpyenvのインストーラを取得し、ダウンロード
$ sudo apt install -y git
$ cd /tmp
$ git clone https://github.com/pyenv/pyenv.git ~/.pyenv
3. pyenvの更新(下記の2行を行い、Already up to dateと出ればOK)
$ cd ~/.pyenv
$ git pull
4. pyenvのパスを通して有効化(「PYENV_ROOT」環境変数を定義)。(以下をそのまま打ち込む)
$ echo 'export PYENV_ROOT="${HOME}/.pyenv"' >> ~/.bashrc
$ echo 'if [ -d "${PYENV_ROOT}" ]; then' >> ~/.bashrc(なくてもいいかも)
$ echo ' export PATH=${PYENV_ROOT}/bin:$PATH' >> ~/.bashrc
$ echo ' eval "$(pyenv init -)"' >> ~/.bashrc
$ echo 'fi' >> ~/.bashrc(なくてもいいかも)
$ exec $SHELL -l(なくてもいいかも)
$ source ~/.bashrc
5. 現在のpython3とpyenvのバージョンを確認
$ python3 --version
Python 3.8.5
$ pyenv --version
pyenv 1.2.21-6-g2bf6111f
6. pyenvでインストールできるpythonのバージョンの一覧を表示、pythonのインストール(インストールしたいバージョンを指定)
$ pyenv install --list
$ pyenv install 3.8.5
7. python 3.8.5がインストールされたことを確認(3.8.5と出ればOK)。またこれは、インストール済みの一覧を表示し、現在アクティブなバージョンがどれかを知ることも可能
$ pyenv versions
* 3.8.5 (set by /home/アカウント名/.pyenv/version)
8. python3.8.5を有効化
$ pyenv global 3.8.5
【補足】バージョンの切り替えにはglobalとlocalがあるが、globalはどのディレクトリでも設定したpythonを実行、localは現在のカレントディレクトリだけに反映される。
※これを行っても/usr/bin/pythonの方が優先される場合やバージョンがうまく切り替わらない場合は、「pyenv init」を使うようにする!
具体的には、まずターミナル画面でpyenv initとする。そうすると、以下のようなものが出力されるはず。
# Load pyenv automatically by appending
# the following to ~/.bash_profile:
eval "$(pyenv init -)"
この場合、指示に従って~/.bash_profileにeval "$(pyenv init -)"を追加する。
上記をやってもダメな場合は、ホームディレクトリに.python-versionファイルがないか確認! -->あれば、rm ~/.python-versionで削除。
そもそも切り替わらない理由の多くは、システムのpythonを参照している場合。-->which pythonで確認(~/.pyenvならOK)
余談だが、pyenvのバージョン選択はまず、
pyenv shell
で設定されるPYENV_VERSION環境変数。次に、
pyenv global
で設定できる~/.pyenv/versionファイル。全てがなかったらシステムのpythonを参照するようになっている。
9. 8までの操作で一通りpythonのインストールは終了。コマンドライン上でpython3と打つと、以下のように表示されればOK(終了は、Ctrl+Dもしくはexit()と打つ)
Python 3.8.5 (default, Aug 12 2020, 16:10:24)
[GCC 9.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
※pyenvで作成した環境を消したい場合は、単純にpyenv uninstall 3.8.5のようにすればいい。
10. pyenvにより、"easy_install"とpythonのパッケージ管理ツール"pip"が設定される。
$ which pip3
$ which easy_install
11. pythonのパッケージも同時にインストールされる。
$ pip3 list
Package Version
---------- -------
pip 20.1.1
setuptools 47.1.0
WARNING: You are using pip version 20.1.1; however, version 20.2.2 is available.
You should consider upgrading via the '/home/yoshikawa/.pyenv/versions/3.8.5/bin/python3.8 -m pip install --upgrade pip' command.
12. 上記のように出るので、pipとsetuptoolsを更新
$ python3 -m pip install -U pip
$ python3 -m pip install -U setuptools
13. python開発環境(Jupyterlab, (spyder))のインストール(インストール後、jupyter --versionとすることで、jupyter notobookもインストールされていることが分かる。)
$ python3 -m pip install -U ipython
$ python3 -m pip install -U jupyterlab jupyter jupyter-console jupytext spyder
※余談:Ubuntuでは、aptでもJupyter Notebookはインストールできるらしいが、Extensionのインストール等で困ったことになるらしいので、pipでインストールした方がいいかも。
Jupyter Notebookの起動は、"$ juypter notebook"で行う。UbuntuへのJupyter Notebookのインストール参考ページ
14. TensorFlow,Keras,Matplotlib,Python用opencv-pythonのインストール
$ python3 -m pip uninstall -U tensorflow tensorflow-gpu keras (トラブルの可能性を減らすため、この操作をしておく)
$ python3 -m pip install -U setuptools
$ python3 -m pip install -U tensorflow-gpu tensorflow_datasets tensorflow-hub keras matplotlib opency-python
$ python -m pip install -q git+https://github.com/tensorflow/docs
$ python -m pip install -q git+https://github.com/tensorflow/examples.git
15. Pythonのnumpy, TensorFlow, Kerasのバージョン確認
$ python3 -c "import numpy; print( numpy.__version__ )"
$ python3 -c "import tensorflow as tf; print( tf.__version__ )"
$ python3 -c "import keras; print( keras.__version__ )"
16. GPUが認識できているかの確認(Keras/TensorFlowでディープラーニングを行う際に、計算時間を短縮するためにGPUを使う)
$ python3 -c "from tensorflow.python.client import device_lib; print(device_lib.list_local_devices())"
「device_type:"GPU"」があればGPUが認識できている
17. 各種パッケージのインストール
$ python3 -m pip install -U matplotlib numpy scipy h5py scikit-learn scikit-image seaborn pandas pandasql pillow pytest pyyaml cython bokeh keras statsmodels plotly sympy csvkit docopt pyproj flake8 protobuf pymc3 bs4 html5lib rope wrapt mkl mkl-include cffi wheel six holoviews jupyterlab jupyter spyder sphinx bottleneck pygments numexpr xlrd xlsxwriter lxml graphviz pydot flask django redis pylint bz2file PyOpenGL opencv-python msgpack pandas-bokeh ggplot prettyplotlib pybrain3 firebase-admin googletrans google-cloud-vision gpyocr azure-cognitiveservices-vision-computervision gensim mecab matplotlib-venn pygame jupyter-console jupytext gloo scikit-video scikits.datasmooth scikits.example scikits.fitting scikits.optimization scikits.vectorplot bottle zodb gdata
// 以下は必要に応じて入れればいいと思う。(pyrootには必ずしも必要ではない)
$ python3 -m pip install git+https://github.com/msgpack/msgpack-python
$ python3 -m pip install git+https://github.com/davisking/dlib
$ python3 -m pip install git+https://github.com/ageitgey/face_recognition
$ python3 -m pip install git+https://github.com/jrosebr1/imutils
$ python3 -m pip install -U pyglet
$ python3 -m pip install -U cocos2d
$ python3 -m pip install -U geopandas
$ python3 -m pip install git+https://github.com/DinoTools/python-overpy
③
1. Python公式サイトから欲しいバージョンのソースコードをダウンロード(今回は3.8.5をダウンロード)
curl -O https://www.python.org/ftp/python/3.8.5/Python-3.8.5.tar.xz (curl -Oはwgetでも可)
2. ダウンロードしたファイルを解凍(xz形式はtarのJオプションで解凍可能)
$ tar xJf Python-3.8.5.tar.xz
3. ビルド
$ cd Python-3.8.5
$ ./configure --enable-optimizations
$ make -s -j4
$ sudo make altinstall
上記のようにすると、デフォルトで/usr/local/binにインストールされるが、別の場所にインストールしたい場合は明示的にその場所を指定することでインストールが可能。
例えば、ホームディレクトリ配下にインストールしたい場合、configureする際に./configure --prefix=$HOME/.local --enable-opptimizationsとする。
また最後のmakeで、make installではない理由は、make installをするとシステムのpython3とコンフリクトし、バイナリを上書きしたりリンクを破壊したりする場合があるので、make altinstallが推奨されているらしい。
※make altinstalではpython3.8はインストールされるが、python3コマンドはインストールされない。
4. PATHの設定
必要に応じて、pythonのPATHを~/.bashrcに設定しておくと便利。
これをしておくと、ビルドしたpythonが実行されるようになる。~/.local配下にビルドしたなら、具体的には以下のようにする。
PATH="$HOME/.local/python/bin:${PATH}"
export PATH
もし、ビルドしたpythonが不必要になったら、/usr/local/binのpython3.xを削除すればいい。ついでに、2to3, idle3, pydoc3, pyvenvも削除するとビルドする前に戻る。
※[Linux (Ubuntu 18.04 LTS)バージョン]:今回インストールを試みたUbuntuでは、すでにPython 3.6.9がデフォルトでインストールされていたため、Python3がインストール済みというところから話を進める。
まず、Pythonのパッケージ管理をするために、pip3などをsudo apt install python3-pip python3-pandas python3-sklearnでインストール。which pip3でパスの場所を確認。/usr/binの下にインストールされるはず。macの時と同様にインストールしたpip3はバージョンが古いため、パージョンを更新しておく!(pipとpip3を更新することで、ホームディレクトリの下に.local/というディレクトリが作成される。)
次に、Jupyter Notebookをsudo apt install jupyter-notebookでインストール。jupyter --versionでバージョンの確認が可能。
その後、chainerとTendsorFlow、opencvとnumpyのインストールを行う。それぞれ、sudo pip3 install chainer tensorflow pandas-mlとpip3 install opencv-pythonでインストールできる。
【重要】これはUbuntu環境だけの話だが、sudo apt install python3-pipでインストールされるpipは、オリジナルのpipとは少し異なるらしい。
具体的には、Debian系(Ubuntuなどのディストリビューション)のpipは、独自の修正が加えられていて、rootユーザーにならず一般ユーザーでpip3 installができ、自動的に--userオプションが指定された者として実行されるらしい。←これは非常に便利だと個人的には思う。
通常、pip installすると、/usr/local/lib/など全ユーザーが参照できるPythonモジュール格納ディレクトリにインストールされる。しかし、--userを指定すると、ユーザー個別の専用ディレクトリにインストールされ、他のユーザーに影響を与えず自由にパッケージの管理ができる。
つまり、Ubuntu版のpipコマンドを使用する場合、一般ユーザーがpip3 installをすると、ホームディレクトリの下に~/.localディレクトリにインストールされる。sudo pip3 install をすると/usr/local/libにインストールされる。
仮想環境の設定
・後ほど書く。参考にしたページ→ここ
- 解析に便利なパッケージのインストール、アンインストール、アップデート
・上にも書いたが、Pythonのパッケージ管理はpip3というコマンドで行う。始めにインストールしたての場合は、pip3が古いバージョンであることがある。そこで、pip3 install --upgrade pipをして、pip自体をアップデートしておく。
自分がとりあえずインストールしたものとしては、jupyter(同時にipythonもインストールされる), pip-review, tqdm, joblib, pandas, numpy, matplotlib, plotly, OpenPyXL, xlrdである。参考にしたページは、ここやここなど。
・パッケージのアンインストールは、python -m pip uninstall [アンインストールしたいパッケージ]で行う。
・パッケージのアップデートの確認は、pip3 list --outdatedで行う。これをすることでアップデート可能なパッケージが一覧となって出力される。一つずつアップデートするには、pip3 install -U <package name>とすれば良い。ちなみにアンインストールは、pip3 uninstall <package name>とする。
もしくは、pip-reviewというパッケージを使用して行う(事前にpip-reviewパッケージをインストールしておく)。パッケージのアップデートの有無は、コマンドライン上で、pip-reviewもしくはpip list --outdatedとする。こうすると、アップデート可能なパッケージがバージョン付きで表示される。その後、pip-review --autoをすることでアップデート可能なパッケージがアップデートされる。
※ただし、pythonはパッケージのバージョン依存が割とあり、あるパッケージを最新バージョンにアップデートしてしまうと他のパッケージが使用不可になることがある。そのため、あまり一斉にアップデートすることはオススメしない。
※パッケージ一つずつ更新する方法として、まずpython3 -m pip list --outdatedをする。これをすると、現在アップデートが可能なパッケージの一覧が表示される。その後、python3 -m pip install -U [更新したいパッケージ名]を実行するとパッケージがアップデートされる。
- jupyter labおよびjupyter notebookについて
・jupyter notebookは、ブラウザ上でインタプリター形式でPythonのコマンドを使用できるなど様々なことができるツールである。またjupyter labはjupyter notebookの上位互換のようなものであり、大変便利である。pip3 install jupyterlabでインストール可能。起動は、ターミナル上でjupyter labとし、表示されるURLをブラウザから開くと使用可能。
【個人的にすごいと思うこと】:jupyter notebookやjupyter labでは、ROOTのおかげで、Pythonノートブック内でC ++でセルを書くことができ、これは%%cppマジックを使用して実行できる。
マジックはJupyterノートブックの機能であり、ROOTモジュールをインポート(%%cppを使う前に"import ROOT"とする必要あり)すると、%%cppマジックが使用可能となる!
例えば、以下のようにすることで、C++のコマンドが使用できる。
In [6]: %%cpp
cout << "This is a C++ cell" << endl;
これの出力は、This is a C++ cellとなる。
- Pythonの主要なエラー一覧
・このページを参考にしたらいいと思う。→ここ
- Pythonでのマクロの実行
・pythonでdef関数を定義した際の、インタラクティブに実行する方法
python -c "import [ファイル名]; [ファイル名].関数名()"
(ここで、ファイル名は.pyの名前、関数名はdef関数で定義した実行したい関数名)