自分の為のpython環境設定まとめ[mac][ubuntu]

More than 1 year has passed since last update.

無駄な記述が多かったので書き直しました。こっちの方が早くみ終わります。
http://qiita.com/miyamotok0105/items/5f26e4ae41f0e35ded16

deep learing勉強用に環境構築。
結構苦労したので自分用にまとめました。
あまり相性が良くないようですが、anacondaとpyenv両方を入れています。
condaで環境切り替えします。

環境設定ツール

・pyenv,anyenv...pythonバージョンの切り替え
・virtualenv...pythonライブラリの独立環境構築
・anaconda...pyenvとvirturalenvの合体
・brew...macのライブラリ管理ツール
・pip...pythonのライブラリ管理ツール
・conda...pythonのライブラリ管理ツール

環境構築でよくあるエラー

インストールされてない➡︎インストールする
pythonバージョンが違う➡︎切り替える
パスが指定されてない➡︎指定する
パスが間違ってる➡︎パスを正しくする
依存関係に問題がある➡︎アンインストールして再インストール

大まかなインストール流れ

  • macでの環境設定 brewでpyenvをインストール pyenvでanacondaかminicondaかpythonバージョンを指定してインストール condaでpython2系か3系の仮想環境を構築 pip,brewでライブラリをインストール
  • ubuntuでの環境設定 pyenv公式ページでpyenvをgitから落とす。 pyenvでanacondaかminicondaかpythonバージョンを指定してインストール condaでpython2系か3系の仮想環境を構築 pipでライブラリをインストール
  • windowsでの環境設定 anaconda公式ページで2系か3系のインストール pipでライブラリをインストール https://www.continuum.io/downloads

1、インストール

brewのインストール

macのプログラム環境構築ツール
opencvなど。pipからインストールするツールとbrewからインストールするツールがある。
brewからインストールした場合はリンクを貼らないとpathが通らずにpythonから呼び出せないことがある。

bash【mac】
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

setup tool

macデフォルトのpythonに入ってない場合に入れる。pipが入ってない場合などに必要。

bash【mac】
curl https://bootstrap.pypa.io/ez_setup.py -o - | python

setup toolsのアップグレード

bash【mac】
pip install --upgrade setuptools

pyenvのインストール

pythonのバージョンを切り替えるツール

bash【mac】
brew install pyenv 
bash【ubuntu】
git clone https://github.com/yyuu/pyenv.git ~/.pyenv
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init -)"' >> ~/.bashrc

pyenvコマンドが反応することを確認

公式ページ
https://github.com/yyuu/pyenv

pyenvでインストールできる一覧を表示

bash【mac】【ubuntu】
pyenv install -l

pyenvからpythonをインストール

bash【mac】
pyenv install 2.7.12

インストール後にはpathを指定する

~~bashの場合は~/.bashrcに書きを追記。

anaconda3のみ使ってそこからpeenでバージョンを切り替えることをしない方法をとった。
conda createで新しいバージョンでpython2系などの環境を作成と切り替えをする。

bash【mac】【今使ってる例】
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
export PATH="$PYENV_ROOT/versions/anaconda3-4.1.1/bin/:$PATH"    

bash【mac】
#localの場合は実行したフォルタに.python-versionのファイルが出来る
pyenv local 2.7.12  #今いるフォルダ以下のバージョンを切り替え
pyenv global 2.7.12  #全体のフォルダでバージョンを切り替え
pyenv rehash #反映

pipでライブラリをインストール

pipはpythonのライブラリ管理ツール
rubyではgem。C#ではnuget。

bash【mac】
pip install hogehoge

ライブラリをまとめてインストール

bash【mac】
pip install -r requirements.txt

pipを全削除

bash【mac】
pip freeze > piplist.txt
sudo pip uninstall -r piplist.txt

バージョン指定

bash【mac】
pip install six==“1.8.0”

pip自体をアップデート

bash【mac】
pip install -U pip
         or
pip install --upgrade pip

pip一括アップデート

bash【mac】
pip freeze --local | grep -v '^\-e' | cut -d = -f 1 | xargs pip install -U
pip --version

pipのインストール先を指定する

bash【mac】
pip install --install-option="--prefix=$HOME/local" hoge

アンインストール

pip uninstall hogehoge

http://hacknote.jp/archives/19074/

ipythonのインストール

bash【mac】
pip install ipython

ipythonの実行

bash【mac】
ipython notebook

jupyter notebook

GUIベースでpythonを使いたい場合

bash【mac】
pip install -U jupyter

jupyterの実行

bash【mac】
jupyter notebook

anacondaのインストール

anacondaは使いそうなライブラリがあらかじめ纏められたセット。
virtualenvと同じ機能もあり、元の環境を壊さない。

pyenvから特定のバージョンのanacondaをインストール

bash【mac】
pyenv install anaconda-hogehoge

anaconda環境複製(2系のpython環境)

bash【mac】
conda create -n py27 python=2.7 anaconda

同じ環境を複製

bash【mac】
Clone an environment

現在のanaconda環境から出る

bash【mac】
source deactivate

anaconda環境削除

bash【mac】
conda remove --name py27 --all

condaを再インストール

bash【ubuntu】
rm -rf ~/.conda

ファイルからanaconda環境を使う

bash【mac】
conda env create -f environment.yml
conda list

別のバージョンをインストール

bash【mac】
conda create --name snakes python=3
source activate snakes
conda info --envs
python —-version

conda内でpythonのアップデート

bash【mac】
conda update python

conda内でpythonのアップグレード

bash【mac】
conda install python=3.5

パッケージインストール

bash【mac】
conda install --name bunnies beautiful-soup

conda自体のアップデート

bash【mac】
conda update conda
conda update anaconda

全体一括アップデート

bash【mac】
conda update --all

anacondaのpipをinstalll

bash【mac】
~/.pyenv/versions/anaconda3-2.4.1/bin/pip install [パッケージ名]

anacondaのpipをアップデート

bash【mac】
~/.pyenv/versions/anaconda3-2.4.1/bin/pip freeze --local | grep -v '^\-e' | cut -d = -f 1 | xargs ~/.pyenv/versions/anaconda3-2.4.1/bin/pip install -U

アンインストール

conda uninstall hogehoge

git

.gitignore
!.gitkeep
*.DS_Store

opencvのインストール

bash【mac】【ubuntu】version2
conda install -c menpo opencv=2.4.11
bash【mac】【ubuntu】version3
conda install -c menpo opencv3=3.1.0

conda install -c https://conda.binstar.org/jjhelmus opencv
公式ページ
https://anaconda.org/menpo/opencv
https://anaconda.org/menpo/opencv3

バージョンのチェック

import cv2 
cv2.__version__

アンインストール

何個も入っちゃってた場合は全部消す
conda uninstall -c menpo opencv=2.4.11
conda uninstall opencv
conda uninstall opencv3
全部消えたかを確認
conda list | grep opencv

リンクを貼る

bash【mac】
brew link opencv3 --force

contribをインストールしたい場合
※brewで入れた場合はパスを通す
http://blog.amedama.jp/entry/2015/10/01/223056

bash【mac】
brew install opencv3 --with-contrib   #python2系の場合
or
brew install opencv3 --with-contrib --with-python3  #python3系の場合

tapは公式ライブラリではないものを入れる時に使う。
pyenvで切り替えてるのでsourceでライブラリのpathも切り替えないとcvが読み込まれない。

bash【mac】
brew tap homebrew/science
brew install opencv
source ~/.bashrc 
bash【ubuntu】
git clone https://github.com/Itseez/opencv.git
cd opencv
mkdir build
cd build
cmake ..
make -j4 or make -j8
sudo make install

※ほんとうにハマった。makeから入れるとopencvがいたるところでエラーになって、一旦pyenvから入れ直したら動きました。
5時間くらいハマった。。。 うまくいかないときはcondaから入れましょう。

git clone https://github.com/jayrambhia/Install-OpenCV.git
cd Install-OpenCV/Ubuntu
./opencv_latest.sh

opencv2.4を全部消す

bash【ubuntu】
sudo apt-get autoremove opencv-doc opencv-data libopencv-dev libopencv2.4-java libopencv2.4-jni python-opencv libopencv-core2.4 libopencv-gpu2.4 libopencv-ts2.4 libopencv-photo2.4 libopencv-contrib2.4 libopencv-imgproc2.4 libopencv-superres2.4 libopencv-stitching2.4 libopencv-ocl2.4 libopencv-legacy2.4 libopencv-ml2.4 libopencv-video2.4 libopencv-videostab2.4 libopencv-objdetect2.4 libopencv-calib3d2.4 

普通にmake uninstall

bash【ubuntu】
make uninstall

opencvのビルドエラーの場合

libdc1394 error: Failed to initialize libdc1394

CMakeListsの中身を修正。-D WITH_1394=OFFにする。
https://github.com/opencv/opencv/blob/master/CMakeLists.txt

参照
http://worktoolsmith.com/ubuntu-opencv/

dlibのインストール

bash【mac】
sudo pip install lib

エラーが出る場合condaで入れればいい
http://paper.hatenadiary.jp/entry/2016/09/04/173818

brew install cmake
brew install boost-python
conda install -c menpo dlib=18.18

tensorflowのインストール

パッケージ依存エラー。既にsetuptoolsが入ってるとエラーになる。

Cannot remove entries from nonexistent file /Users/user/.pyenv/versions/anaconda3-4.1.1/lib/python3.5/site-packages/easy-install.pth

この場合は--upgradeをつける

bash【mac】
~/.pyenv/versions/anaconda3-4.1.1/bin/pip install --upgrade --ignore-installed $TF_BINARY_URL

numpyの依存関係でエラーになる場合あり

ImportError: numpy.core.multiarray failed to import
http://qiita.com/LyricalMaestro0/items/fe5baa162978cb3f7030

chainerをインストール

バージョン指定をしてインストール
sudo ~/.pyenv/versions/anaconda3-4.1.1/envs/py27/bin/pip install chainer==1.5.1

2、バージョン切り替えと確認コマンド

pythonのライブラリのパスを確認

インストールパスの確認

bash【mac】
python -c "from distutils.sysconfig import get_python_lib; print (get_python_lib())"

or

bash【mac】
python
>>> import sys
>>> sys.path

更新可能なパッケージ一覧を表示

bash【mac】
pip list -o
pip show <package>

バージョンの確認

bash【mac】
python --version
python -V

pyenvでバージョンの切り替えと確認

現在選ばれているpythonバージョンの確認

bash【mac】
pyenv versions

pyenvで環境切替
※ここはあまり使わないでcondaで環境切り替えしたほうが良い。

bash【mac】
pyenv local anaconda3.4.1

pyenvで切り替えた後にするおまじない

bash【mac】
pyenv rehash

インストール済みライブラリ一覧の確認

bash【mac】
pyenv install -l

anacondaでバージョンの切り替えと確認

ライブラリ一覧

bash【mac】
conda list

ライブラリを検索

bash【mac】
conda search <foo>

環境一覧

bash【mac】
conda info -e
conda info --envs
conda env list

環境切り替え

bash【mac】【ubuntu】
source activate hogehoge

※pyenvと衝突した場合

bash【mac】
source versions/anaconda3-2.5.0/bin/activate hogehoge

windowsはsourceコマンドがないのでactivateを直接実行

bash【windows】
activate hogehoge

環境を抜ける

source deactivate

anacondaごと消す場合はanacondaのフォルダーをそのまま削除

pythonバージョンをチェック

bash【mac】
conda search python

パッケージ一覧

bash【mac】
conda list
conda list -n snowflakes

切り替え時に起きるエラー

※pyenvでバージョンを切り替えるときは、一度rootにcondaを戻してから切り替えると直る場合もあった。謎

Your PYTHONPATH points to a site-packages dir for Python 2.x bet you are running Python 3.x!
pythonpathを場合分けして解決
export PYTHONPATH="/usr/local/lib/python2.7/site-packages/:PYTHONPATH"exportPYTHONPATH="/usr/local/lib/python3.5/sitepackages/:PYTHONPATH"

学習

サーバー側で学習をさせる場合はnohupを使うとバックグラウンドで動いてくれるので便利
nohupはターミナルの接続が切れた場合にハングアップシグナル(SIGHUP, HUP)という強制終了の命令を無視する。
こんな感じで書く。

nohup sh run_minist.sh &

nohupの例

nohup ping 8.8.8.8 &
jobs
fg %1

python基礎

上位階層ディレクトリのファイルをimportする
import sys,os
sys.path.append(os.pardir)
from a import *

文字化け対策

python3の場合

echo $LANG
をした場合にcになっていることがある。
export LANG=en_US.UTF-8
に変更すると日本語が表示される。

以下はやらないほうがいい設定

【注意】pyenvとanacondaを共存させた場合に.pyathon-versionを見てpathを切り替えた。使っているバージョンの分だけ書き換えて使用を試みたがこのやり方をやめた。(結局パスが通らないエラーになったのでanacondaのみで環境切り替えしてpyenv切り替えを使わない方向へ。)

bash【mac】【良くない例】
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"

if [ ! -e "./.python-version" ];
then
    echo not exits
else
    A=`cat ./.python-version`
    if [ "anaconda-2.4.0" = ${A} ];
    then
    echo switch anaconda-2.4.0
    export PYTHONPATH="/usr/local/lib/python2.7/site-packages/:$PYTHONPATH"
    export PATH="$PYENV_ROOT/versions/anaconda-2.4.0/bin/:$PATH"
    else
    echo switch anaconda3-4.1.1
    export PYTHONPATH="/usr/local/lib/python3.5/site-packages/:$PYTHONPATH"
    export PATH="$PYENV_ROOT/versions/anaconda3-4.1.1/bin/:$PATH"    
    fi
fi

自動rehash

pyenvで切り替えるたびにrehashするのが面倒くさい場合

bash【mac】
brew install homebrew/boneyard/pyenv-pip-rehash

どうしても消えない場合

ちょっと危険かもだけど。自己責任で。結局このあとpyenvから入れ直した。これもやらないほうがいい。
sudo find / -name "opencv" -exec rm -if {} \;

windows編

コマンドラインから入れれるものと、インストーラから入れるものがバラバラで正直つらい。
python環境はanacondaインストーラで直接入れた。
windowsのubuntuでもインストール中。

gfortran

matplotlibがfortranに依存してたのでインストーラで入れた。
https://qiita.com/HirofumiYashima/items/846cd8e51408ab8c88f9

SciPy

全然pipで入らないのでwhlの形式でgitから落として直接入れた。
scipy‑0.19.0‑cp36‑cp36m‑win_amd64.whl
python -m pip install D:\PythonInstaller\scipy-0.19.0-cp36-cp36m-win_amd64.whl

amdなのかx86なのか64なのか
winなのかlinuxなのかmacなのか
python2.7なのかpython3.5なのか
細かく気にしてダウンロードした。

http://mstn.hateblo.jp/entry/2017/04/13/014519

dlib

condaもあった。boostってのが全然ビルド通らなかったので、condaに逃げた。

conda install -c conda-forge dlib=19.4

https://github.com/davisking/dlib

condaについて(windows)

xcodeのcocoapodsなど、この手のツールにありがちなキャッシュを持ってる実装。
なので稀にcondaにも影響を与えるライブラリを
エラーの出るライブラリに上書きした場合はconda自体をアンインストールするかキャッシュを消す必要がある。pipすらこけたりして身動きが取れなくなる。

キャッシュの場所。この中を全部消すと再度取れる。

C:\Users\[ユーザー名]\AppData\Local\Continuum\anaconda3\pkgs

ちなみにcondaで作った環境は下記

C:\Users\[ユーザー名]\AppData\Local\Continuum\anaconda3\envs