Python2系と3系で切り替えたかったり、案件ごとに環境を分けたい場合の環境構築。
Dockerを使わない版。一昔前はCondaを使ってたが途中で商用有料になったし、最近(2021年2月)はpipenvと言うのが出てきてる。そのため一旦追記しておく。pipenvはpipのラッパーでRubyでいうBundler。
pipenvを入れる
pip3にするかpipにするかは環境によると思う。
pip3 install pipenv
#インストールすると下記に環境が出来上がる。
#~/.local/share/virtualenvs/hogehoge
#同時にPipfileと言うのもできるが、pipenv shellしたときのカレントディレクトリにある。
#Python3系の環境を作る
pipenv --python 3
#細かくバージョン指定もできる
pipenv --python 3.6.2
#反映
pipenv shell
#パスが変わってることを確認(自分はmacでやった)
which python
#元のパス /usr/bin/python3
#変わったパス /Users/miyamoto/.local/share/virtualenvs/hogehoge
#バージョン確認
python -V
#環境から抜ける
exit
#パッケージインストール
pipenv install hoge
#一気にインストール
pipenv install -r path/to/requirements.txt
#pyenvを入れる
git clone https://github.com/yyuu/pyenv.git ~/.pyenv
brew install pyenv
winはpyenvいらない。condaへ。
#pyenvを通す
ubuntu
#pyenv
export PYENV_ROOT=$HOME/.pyenv
export PATH=$PYENV_ROOT/bin:$PATH
eval "$(pyenv init -)"
mac
#pyenv
eval "$(pyenv init -)"
#確認
pyenv versions
#anacondaかminicondaをインストール
mac linux
pyenv install miniconda3-3.10.1
pyenv global miniconda3-3.10.1
win
好きなのをダウンロード
https://www.continuum.io/downloads
#condaを通す
export PATH="$PYENV_ROOT/versions/miniconda3-3.10.1/bin:$PATH"
#condaでpython環境を作る
conda create -n py35 python=3.5
conda create -n py37 python=3.7
#確認
conda info --e
#py35って名前の環境を使用する
mac linux
source activate py35
win
activate py35
(py35)ってのがプロンプトに出てると環境を使えてる。
たまに(py35)って出てるのに環境には入れてない時がある。
動きが変だと思ったら一回deactivateして環境を抜けて入り直す。
それでも変な時はpyenv uninstallして環境を入れ直そう。
#windowsはcondaを一度使ってみるべし
pipで入らないがcondaで入ったというのがあった。
conda install -c conda-forge keras
#3.1.0系
conda install -c menpo opencv3=3.1.0 -n [環境名]
#3.2.0系
#書いてる時点では3.1.0系にMSER_createのバグがありそうで、3.2.0で直ってると書いてるので入れ直したかった。が、入らなかった。
#conda install -c conda-forge opencv=3.2.0
conda install -c conda-forge dlib=19.4
conda install scikit-image
conda install -c conda-forge ffmpeg
#2018/6/15:3.2.0を使えない問題発症
ビルドがめんどくさい。せっかく作ったC++環境も壊れそうだし。。
そして消えない。condaからopencv3が消えてくれない。
conda list | grep open
opencv3 3.1.0 py35_0 menpo
sudo conda install -c conda-forge opencv -n [環境]
sudo conda uninstall -c menpo opencv -n [環境]
sudo conda uninstall -c menpo opencv3
はないとかゆうし。
環境を切り替えます。
conda uninstall -c conda-forge opencv=3.2.0
>>> import cv2
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named 'cv2'
もう知らん。一旦放置しよう。
#opencv
ビルドすると大変なので。pipかcondaで入れる。
pip install -U opencv-python
jupyterの注意点
conda createの時には-nを使って環境名を必ず付けること。-n付けないでinstallすると変になるよ。
ImportError: No module named cv2とかImportError: No module named tensorflowとか出ておかしーなーってなる時は、環境作り直そう。
jupyterでカーネル切り替え最短メモ
conda create -n py36 python=3.6
source activate py36
conda install -n py36 jupyter opencv
conda install notebook ipykernel
ipython kernel install --user --name py36 --display-name py36
jupyter noteobok
ここ参照。
Jupyter上でkernel切り替えをしてもうまく機能しない場合の解決方法
#jupyerにpython2とpython3を共存
ここを見て設定
https://qiita.com/utahkaA/items/ae14623ae81f85bea4f5
pyenvでminiconda2とminiconda3を両方入れればOK。
miniconda3からpython2に切り替えてもjupyterには表示されてなかった。
#jupyterのカーネルエラーとか信頼できない系のエラーが出た時。
passを生成して、暗号したのを設定ファイルに入れると良い。
...
File "/usr/lib/python2.7/socket.py", line 224, in meth
return getattr(self._sock,name)(*args)
error: [Errno 99] Cannot assign requested address
#pipでpermissions系のエラーが直らない。
https://stackoverflow.com/questions/27870003/pip-install-please-check-the-permissions-and-owner-of-that-directory
ごく稀に見る現象。.pyenv以下を全部消して入れ直してもダメなときある。
こんな雰囲気でowner権限を入れたりとか
$ sudo chown -R USERNAME /Users/USERNAME/Library/Logs/pip
$ sudo chown -R USERNAME /Users/USERNAME/Library/Caches/pip
--user入れたりとか
pip install --user <package name>
jupyterをサーバーからリモートで動かしたい
ここの設定をする
https://qiita.com/Miggy/items/5466a2c1e968602f3ebe
~/.jupyter/jupyter_notebook_config.pyを出力して
ipythonでパスワードをsha1にして、その内容をjupyter_notebook_config.pyに書き込んだりちょっと設定すれば良い。
あとは各クラウドでポートを開ける処理をすれば動くはず。
Pythonのimportしてるライブラリパスを調べる
Opencvどこから呼んでるんだよとなったのでメモ。
import cv2
cv2.__file__
import imp
imp.find_module('cv2')
自分の場合は.pyenv以下のを見にいってたの、期待通りだった。
macに直接入れる
sudo easy_install pip
参考
https://github.com/jupyter/notebook/issues/2213
http://jupyter-notebook.readthedocs.io/en/latest/security.html
https://qiita.com/SaitoTsutomu/items/aee41edf1a990cad5be6