47
63

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

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

Last updated at Posted at 2016-11-04

無駄な記述が多かったので書き直しました。こっちの方が早くみ終わります。
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

##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
試してないけど最近は -n [環境名]ってのが大事になったと思う。
conda install -c menpo opencv=2.4.11

conda install -c menpo opencv3=3.1.0 -n [環境名]
bash【mac】【ubuntu】version3
試してないけど最近は -n [環境名]ってのが大事になったと思う。
conda install -c menpo opencv3=3.1.0 -n [環境名]

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"
export PYTHONPATH="/usr/local/lib/python3.5/site-packages/:$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なのか
細かく気にしてダウンロードした。

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

conda install -c conda-forge dlib=19.4

#condaについて(windows)

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

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

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

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

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

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
47
63

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?