作業時間５分以内で終わるpython環境構築 最短メモ。


Python2系と3系で切り替えたかったり、案件ごとに環境を分けたい場合の環境構築。
Dockerを使わない版。一昔前はCondaを使ってたが途中で商用有料になったし、最近(2021年2月)はpipenvと言うのが出てきてる。そのため一旦追記しておく。pipenvはpipのラッパーでRubyでいうBundler。

<hr>

# 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

```



<hr>

#pyenvを入れる

```:ubuntu
git clone https://github.com/yyuu/pyenv.git ~/.pyenv
```

```:mac
brew install pyenv
```

winはpyenvいらない。condaへ。

#pyenvを通す

ubuntu

```bash:bashrc
#pyenv                                                                                                                                                        
export PYENV_ROOT=$HOME/.pyenv
export PATH=$PYENV_ROOT/bin:$PATH
eval "$(pyenv init -)"
```

mac

```bash:bashrc
#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を通す


```bash:bashrc
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'

```

もう知らん。一旦放置しよう。

https://stackoverflow.com/questions/42310099/failed-to-run-conda-install-c-menpo-opencv3-3-2-0-in-windows7/42535587?noredirect=1


#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切り替えをしてもうまく機能しない場合の解決方法](https://qiita.com/tk_01/items/9d3961e386714b67f732)



#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に書き込んだりちょっと設定すれば良い。

あとは各クラウドでポートを開ける処理をすれば動くはず。

gcpの場合
https://towardsdatascience.com/running-jupyter-notebook-in-google-cloud-platform-in-15-min-61e16da34d52

# 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