원격 접속등을 위해서 비밀번호를 사용한다. 그러기 위해서 구성 파일을 통해서 비밀번호, 포트 번호등을 설정해야 한다.
generate-config
Jupyter Lab 에서 설정 파일을 생성한다. 다음 명령으로 각각 $HOME/.jupyter/ 위치에 jupyter_notebook_config.py 파일이 생성된다.
1
(daeshin_hts)> jupyter lab --generate-config
jupyter_notebook_config.py 설정 파일에 비밀번호를 추가하려면 비밀번호를 생성하는데 jupyter 명령과 python 명령에서 생성하는 2가지 방법이 있다.
1) jupyter 명령으로 패스워드 생성
첫번째로 아래는 쥬피터 폴더에 있는 파일 ‘jupyter_notebook_config.json’에 패스워드를 생성해 준다.
1 2 3
(daeshin_hts)$ jupyter notebook password Enter password: Verify password: [NotebookPasswordApp] Wrote hashed password to $HOME\.jupyter\jupyter_notebook_config.json
위 명령으로 jupyter_notebook_config.json에 암호가 생성되면 “”sha1:723c…” 로 시작하는 패스워드 해시코드를 복사한 후 jupyter_notebook_config.py 파일의 c.NotebookApp.password 항목에 입력을 한다.
2) python 명령으로 비밀번호 생성
비밀번호 설정 다른 방법으로 파이썬에서 passwd 모듈을 실행해서 비밀번호를 얻을 수 있습니다.
1 2 3 4 5 6 7
(daeshin_hts)$ python >> from notebook.auth import passwd >> passwd() >> Enter password: >> Verify password:
'sha1:********'
출력되는 sha1 암호문자열을 복사해서 사용하시면 됩니다.
1 2 3 4 5
[jupyter_notebook_config.py]
c.NotebookApp.password = 'sha1:*********'# 외부 접속시 사용할 비밀번호 c.NotebookApp.ip = '*'# 어디서든 접속 가능 c.NotebookApp.port = 8888 # 접속에 사용할 포트
Powershell Openssh 설치
윈도우에 원격 접속해서 HTS를 위한 파이썬 가상환경에서 jupyterlab을 실행할 필요가 있다. 이때 윈도우 파워쉘에서 openssh 설치하고 연결한 후에 administrator 계정으로 관리자 모드로 jupyhter 를 실행한다.
$ pyenv versions system 3.8.1 * anaconda3-5.3.1 (set by /Users/qkboo/.pyenv/version)
일반적으로 Anaconda 만을 사용한다면 설치후 사용자 쉘 환경에서 conda 를 사용하기 위해서 환경변수를 초기화 해야 하는데 다음 명령으로 실행한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
$ conda init bash no change /Users/qkboo/.pyenv/versions/anaconda3-5.3.1/condabin/conda no change /Users/qkboo/.pyenv/versions/anaconda3-5.3.1/bin/conda no change /Users/qkboo/.pyenv/versions/anaconda3-5.3.1/bin/conda-env no change /Users/qkboo/.pyenv/versions/anaconda3-5.3.1/bin/activate no change /Users/qkboo/.pyenv/versions/anaconda3-5.3.1/bin/deactivate no change /Users/qkboo/.pyenv/versions/anaconda3-5.3.1/etc/profile.d/conda.sh no change /Users/qkboo/.pyenv/versions/anaconda3-5.3.1/etc/fish/conf.d/conda.fish no change /Users/qkboo/.pyenv/versions/anaconda3-5.3.1/shell/condabin/Conda.psm1 no change /Users/qkboo/.pyenv/versions/anaconda3-5.3.1/shell/condabin/conda-hook.ps1 no change /Users/qkboo/.pyenv/versions/anaconda3-5.3.1/lib/python3.7/site-packages/xontrib/conda.xsh no change /Users/qkboo/.pyenv/versions/anaconda3-5.3.1/etc/profile.d/conda.csh modified /Users/qkboo/.bash_profile
==> For changes to take effect, close and re-open your current shell. <==
위 명령은 아래 환경 변수가 작용해서 conda 의 가상환경을 다루는 쉘 스크립을 실행해 준다.
보통 conda init 를 해주면 쉘 스크립의 마지막 위치에 삽입된다. 그러므로 .bash_profile 에 있는 pyenv 초기화가 항상 마지막에 실행되도록 하자.
1
pyenv 와 anaconda 환경의 전환 정리
Examples of managing virtual environments.
1 2 3 4 5 6
# virtual environments from pyenv pyenv install 3.6.9 pyenv virtualenv 3.6.9 new-env pyenv activate new-env pyenv deactive # You can also use `pyenv local`
1 2 3 4 5
# virtual environments from conda conda create -n new-env python=3.6 conda env list conda activate new-env conda deactivate
1
1
anaconda 패키지와 환경관리를 할 수 있는 conda 명령어 몇가지를 소개
1 2 3 4 5 6 7 8 9 10 11
// 아나콘다의 버전 확인 conda --version
// 아나콘다 버전 업데이트 conda update conda
// 설치된 패키지 리스트 conda list
// conda 통해 설치 가능한 패키지 검색 conda search "tensorflow"
conda에서 개발 준비하기
Anaconda 설치가 완료되면 conda 명령으로 TensorFlow를 사용할 환경을 구성하고 사용해 보자.
conda 툴을 사용하는 anaconda, miniconda 가 혼재된 환경에서 pyenv로 가상환경을 즉시 활성화 시키면 conda 명령 실행에 혼선을 일으킨다. 예를 들어 위의 가상환경 anaconda3-5.3.1/envs/opencv4 을 pyenv로 활성화 하고 python, conda 명령을 실행해 보면
1 2 3 4 5
~$ pyenv shell opencv4 ~$ pyenv version opencv4 (set by PYENV_VERSION environment variable) ~$ which python /Users/qkboo/.pyenv/shims/python
가상환경의 python 위치를 확인해 보고, conda 명령을 찾아 보자,
1 2 3 4 5 6 7 8 9
~$ pyenv which python /Users/qkboo/.pyenv/versions/opencv4/bin/python $ pyenv which conda pyenv: conda: command not found
The `conda' command exists in these Python versions: anaconda3-5.3.1 miniconda3-latest
pyenv 환경 아래 2개의 conda 때문에 혼선이 나타난다.
예를 들어 현재 쉘 환경에서 파이썬 환경 ananconda3-5.3.1 을 사용하도록 하고, conda 를 확인해 보면 명확하게 해당 파이썬 환경의 anaconda 의 가상환경을 가르키지만! conda env 명령의 결과는 다르게 나타낸다. anaconda 뒤에 minicond를 설치해서 miniconda 가상환경이 우선으로 나타난다.
1 2 3 4 5 6 7 8 9 10 11 12
~$ pyenv shell anaconda3-5.3.1 ~$ pyenv which conda /Users/qkboo/.pyenv/versions/anaconda3-5.3.1/bin/conda ~$ conda env list # conda environments: # base * /Users/qkboo/.pyenv/versions/miniconda3-latest deep_learning /Users/qkboo/.pyenv/versions/miniconda3-latest/envs/deep_learning django3 /Users/qkboo/.pyenv/versions/miniconda3-latest/envs/django3 tf24_cpu /Users/qkboo/.pyenv/versions/miniconda3-latest/envs/tf24_cpu tf2_p37 /Users/qkboo/.pyenv/versions/miniconda3-latest/envs/tf2_p37 tkinter /Users/qkboo/.pyenv/versions/miniconda3-latest/envs/tkinter
그래서 가상환경 활성화시 가상환경 디렉토리를 지정해서 사용하자!
그래서 anaconda 와 miniconda 환경을 활성화 시키려면 shell, local, system 명령을 통해 설치된 파이썬 환경을 활성화 하고, 해당 파이썬 환경에서 가상환경을 다루는 것이 좋다.
예를 들어 현재 쉘 환경에서 파이썬 환경 ananconda3-5.3.1 을 사용하도록 실제 가상환경 위치를 지정해서 활성화 한다.
만약 main module과 extra module을 같이 사용하고 싶다면 아래처럼 설치합니다.
1
> pip install opencv-contrib-python
conda 명령으로 설치하기
Anaconda 3가 설치되어 있다면 명령어 한 줄 입력만으로도 거의 최신 버전(글 작성시 버전 3.6.0)의 Python-OpenCV 라이브러리를 설치할 수 있다:
1
> conda install -c conda-forge opencv
conda-forge에 등록되어 있는 OpenCV 라이브러리에 대한 상세한 설명은 링크를 통해 확인할 수 있습니다. 필요한 경우, python virtualenv를 생성하여 개발환경 패키지를 관리할 수 있다.
OpenCV 3.3의 가장 큰 변화는 Deep Learning in OpenCV 라고 할 수 있겠습니다. 해당 링크에서 Deep Learning 관련 추가된 사항을 확인할 수 있습니다. 이외에 자세한 변경 로그는 OpenCV Change Logs Version:3.3을 참고하시면 되겠습니다.
여담으로 최신 버전 OpenCV 3.3.1 버전 이후에는 JavaScript Interface가 추가되어 인터랙티브 웹-기반 OpenCV 어플리케이션 구현이 공식적으로 가능해졌다고 한다.
$ python Python 3.4.2 (default, Oct 19 2014, 13:31:11) [GCC 4.9.1] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import cv2 >>> cv2.__version__ '3.1.0' >>>
시스템에서 파이썬이 두 개 이상 설치되어 있으면 일반적을 Python2.7 버전이 기본 파아썬 이다.
1 2 3 4 5 6 7 8
$ python3 Python 3.4.2 (default, Oct 19 2014, 13:31:11) [GCC 4.9.1] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import cv2 >>> cv2.__version__ '3.1.0-dev' >>>
Python 가상환경과 Opencv
파이썬 개발시 virtualenv 를 사용한다면 OpenCV 라이브러리를 연결해 줄 필요가 있다. virtualenv 가상환경 생성시 파이썬 라이브러리는 복사가 안된다 그래서 가상환경 생성후에 cv2.so 라이브러리를 링크해줄 필요가 있다.
가상환경에 cv2.so 연결하기
python2 가상환경 cv3python2 가 있고, 여기에 OpenCV 를 사용하려면 다음 같이 cv2.so 라이브러리를 링크해 준다.
1 2
$ cd ~/.virtualenvs/cv3python2/lib/python2.7/site-packages/ $ ln -s /usr/local/lib/python2.7/dist-packages/cv2.so cv2.so
역시 python3 가상환경 cv3python3 가 있다면 python3 라이브러리에 있는 cv2.so 라이브러리를 링크해 준다.
1 2
$ cd ~/.virtualenvs/cv3python3/lib/python3.4/site-packages/ $ ln -s /usr/local/lib/python3.4/dist-packages/cv2.cpython-34m.so cv2.so
또한 cv2.so를 사용하기 위해서 각 가상환경에 numpy를 설치해 준다. Raspberry Pi 2에서 numpy를 pip로 설치할 때 약 10분 이상 소요된다.
(cv3python3) ~/$ python Python 3.4.2 (default, Oct 19 2014, 13:31:11) [GCC 4.9.1] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import cv2 >>> cv2.__version__ '3.1.0' >>>