2. 연사 소개
▪ 현재
• KAIST 전산학과 첨단망 연구실 박사과정 (http://an.kaist.ac.kr)
• 태터네트워크재단(TNF) Needlworks 멤버 (http://needlworks.org)
• Popong 프로젝트 참여 (http://popong.com & http://pokr.kr)
▪ 과거
• Microsoft Research Cambridge@UK 연구인턴 (2012년 겨울)
• KT NexR 인턴 (2009년 여름) 및 파트타임 개발 (2010년 초까지)
▪ 논문
• The Power of Batching in the Click Modular Router
[APSys 2012 Workshop]
3. 오늘 할 이야기
▪ 뭔가 심각한 거 많이 하는 것 같지만,
오늘은 정말 기초적인 이야기하려고 왔습니다. :)
▪ 실제 개발 작업은 주로 Linux 서버를 이용하지만,
데스크톱PC는 Windows를 선호해요.
(GUI 안정적, 날개셋 한글입력기, 게임…)
▪ Microsoft에서 일할 때는 당연히 Windows가 기본 환경
• 뒤에 있을 Visual Studio PyTools 세션 잘 들어보세요~
• Windows에서도 자잘한 노가다 작업을 Python으로 해결하면 편합니다.
• ipython notebook 같은 것도 로컬 PC에서 바로 돌리면 편하겠죠?
4. 목 차
▪ Python 기본 설치
• PATH 설정하기
• Windows용 패키지 찾기
• 여러 버전(2.x & 3.x) 동시에 사용하기
▪ 개발환경 관리 노하우
• 설정 파일 버전관리
• 자동 초기 설정 스크립트 소개
• PuTTY + tmux + vim 조합을 위한 solarized 테마 설정법
5. Python 기본 설치:
PATH 설정하기
▪ 공식 배포되는 installer로 설치한 다음 첫번째로 할 일!
(사실 installer에 기능이 있으나 기본으로 꺼져있음)
6. Python 기본 설치:
PATH 설정하기
▪ python.exe가 있는 곳 + Scripts, ToolsScripts 폴더 지정
• 예시 Python 설치 경로는 C:DevelopmentPython34
– 이렇게 버전 번호를 적으면 서로 다른 버전을 동시 설치할 때 구분하기 좋다.
• PATH 추가 경로
– C:DevelopmentPython34
– C:DevelopmentPython34Scripts
– C:DevelopmentPython34ToolsScripts
• Installer가 신경써주지 않는 Scripts와 ToolsScripts까지 추가해야 2to3라든지
ipython이라든지 하는 기본/패키지 제공 스크립트를 명령프롬프트에서 원활하게
사용할 수 있다.
8. Python 기본 설치:
Windows용 패키지 찾기
▪ 구글이 알려주는 해결 방법
• 사용 중인 CPython이 컴파일된 Visual Studio / Windows SDK 버전과 동일한
환경을 구축하거나 혹은 몇몇 설정 파일과 스크립트를 손으로 고치거나…
• Visual Studio에서 제공하는 전용 command prompt 사용
(vcvarsall.bat 파일 적용된 상태로 실행됨. 근데 이것도 가끔 틀린 버전을 가리킬
때가 있다…)
• 근데 해당 라이브러리가 의존하는 다른 C/C++ 라이브러리가 있다면?
Welcome to the hell gate.
▪ http://www.lfd.uci.edu/~gohlke/pythonlibs/
• 찬양할지어다….
• 자신의 Python 버전에 맞는 것 찾아서 설치하면 끝. 프로그램 추가/제거 제어판에
서 쉽게 삭제 가능하다. (여전히 dependency는 수동으로 해당 패키지 찾아서 설
치해야 함. 그래도 컴파일 안 해도 되는 게 큰 장점!)
9. Python 기본 설치:
여러 버전 동시에 사용하기
▪ Python 3.3 이상 권장
• 이유 : Python 스크립트의 shebang line (“# /usr/bin/env python3”) 읽어서 시스
템에 설치된 가장 적합한 버전의 Python 인터프리터를 찾아 실행하는 Windows용
wrapper가 포함되어 있다! (C:Windowspy.exe, C:Windowspyw.exe)
▪ PATH 설정
• 우선시하고자 하는 버전이 앞쪽에 오도록 PythonXY, PythonXY/Tools/Scripts 폴더
를 모두 추가해준다. (그냥 python이라고만 실행하면 앞쪽 실행)
• Python 2.x 버전이 앞쪽에 오도록 PythonXY/Scripts 폴더를 모두 추가해준다.
(Python 3.x는 보통 스크립트 실행파일명에 버전 번호가 붙지만 2.x는 그렇지 않음)
▪ 실행파일 심볼릭 링크 만들기
• 명령프롬프트를 관리자권한으로 실행하여 PATH 뒤쪽에 나오는 버전의 Python 디렉토
리에서 다음 실행:
mklink pythonXY.exe python.exe
mklink pythonwXY.exe pythonw.exe
• Scripts 내의 스크립트들은 Python 3.x 이후에서는 대개 버전 번호 붙어서 생성됨.
(예: pip3 install xxx)
10. Python 기본 설치:
여러 버전 동시에 사용하기
▪ 예제
• Python 3.4를 우선으로, 호환성을 위해 Python 2.7도 사용하고 싶다.
• 설정 방법
– PATH 환경변수 : “C:WindowsSystem32;C:Windows;
C:DevPython34;C:DevPython27;
C:DevPython34ToolsScripts;C:DevPython27ToolsScripts;
C:DevPython27Scripts;C:DevPython34Scripts;…”
– C:DevPython27> mklink python2.exe python.exe
– %APPDATA%py.ini 설정 : [defaults]rnpython=3
• 결과
– python => Python 3.4 실행
– python2 => Python 2.7 실행
– ipython => Python 2.7의 ipython 실행
– ipython3 => Python 3.4의 ipython 실행
– .py (#!python) 직접 실행 => Python 3.4 실행
– .py (#!python2) 직접 실행 => Python 2.7 실행
– .py (#!python3) 직접 실행 => Python 3.4 실행
11. Python 기본 설치:
여러 버전 동시에 사용하기
▪ 예제
• Python 2.7을 우선으로, 시험삼아 Python 3.4도 사용하고 싶다.
• 설정 방법
– PATH 환경변수 : “C:WindowsSystem32;C:Windows;
C:DevPython27;C:DevPython34;
C:DevPython27ToolsScripts;C:DevPython34ToolsScripts;
C:DevPython27Scripts;C:DevPython34Scripts;…”
– C:DevPython34> mklink python3.exe python.exe
– %APPDATA%py.ini 설정 : [defaults]rnpython=2
• 결과
– python => Python 2.7 실행
– python3 => Python 3.4 실행
– ipython => Python 2.7의 ipython 실행
– ipython3 => Python 3.4의 ipython 실행
– .py (#!python) 직접 실행 => Python 2.7 실행
– .py (#!python2) 직접 실행 => Python 2.7 실행
– .py (#!python3) 직접 실행 => Python 3.4 실행
12. Python 기본 설치:
여러 버전 동시에 사용하기
▪ Tips
• 본인이 작성하는 .py 파일에는 shebang line을 적어두는 습관을 들이자.
(https://docs.python.org/3/using/windows.html#shebang-lines 참조)
• pip, ipython 등의 스크립트 사용할 때 항상 버전 확인하는 습관을 들이자.
(한쪽에만 설치되어 있거나 할 경우 헷갈릴 수 있음)
▪ 주의 사항
• 파일 이름이 똑같으면 PATH에서 앞쪽에 나오는 폴더 소속이 무조건 우선.
• 버전이 달라도 마찬가지이므로, 굳이 버전을 구분해야 하는 스크립트가 있다면 심
볼릭 링크를 활용하자.
13. 개발환경 관리 노하우:
설정 파일 버전 관리
▪ 여러분은 개발환경 관리(?) 어떻게 하십니까?
▪ 새로운 서버가 생겼을 때, PC 포맷했을 때, …
• 요즘은 클라우드 시대라 VM 따위 생성했다 지웠다는 아무 일도 아닌 세상
• .vimrc 적어주는 것도 슬슬 귀찮다…
▪ 그러던 중 한 동아리 선배의 GitHub 저장소를 보게 되었다.
• https://github.com/netj/dotfiles
14. 개발환경 관리 노하우:
자동 초기 설정 스크립트 소개
▪ 조금 더 자동화할 수는 없을까?
• hg pull https://bitbucket.org/daybreaker/snippets
• cd snippets/home_config
• ./deploy.py -f lab --force
• (Linux 경우에만) ./gen-italics-terminfo.sh
▪ “-f” 옵션은 “flavor” 결정. (예: home, lab, needlworks, popong, …)
▪ 각 flavor들은 configuration.json 파일에 저장
• dotfiles : template 파일과 실제 설정 파일간의 mapping 관리, template 변수
정의, 어떤 OS에 적용되는 파일인지 정의 (변수 예: gitconfig의 username과
email, vimrc의 colorscheme 이름)
• flavors : 각 flavor 별로 template variable 설정 및 포함·제외 파일 추가 설정
• 외부 공개가 곤란한 설정이 있는 경우 local branch로 관리
▪ deploy.py는 bottle template 엔진을 이용해 설정 파일 생성·적용
15. 개발환경 관리 노하우:
solarized 테마 설정법
▪ Solarized Colorscheme
• http://ethanschoonover.com/solarized
• 세밀하게 조율된 16색상 + yellow/blue
grayscale 8개 base 색상
• dark style / light style 모두 가능
• GitHub Atom 편집기에도 기본 제공
• 이 슬라이드가 light style!
▪ 설정 시 주의사항
• xterm-256color로는 표현 불가능.
• 터미널 클라이언트(PuTTY, Terminal, iTerm,
XShell 등)의 16색 프로필 자체를 solarized
색으로 맞춰주고 서버측 프로그램들
(dircolors, vim 등)이 이에 맞춰 색상 코드를
출력하도록 해야 한다.
16. 개발환경 관리 노하우:
solarized 테마 설정법
▪ Daybreaker’s snippets/home-config
• Client side
– putty 설정
– solarized_putty.reg 적용
– xterm-256color를 TERM 환경변수로 설정
– 새로운 서버에 접속할 때 solarized 프로필 선택하고 서버 주소 입력해서 프로필
fork & save 해두면 해당 서버 영구 적용.
• Server side
– configuration.json의 flavor에서 vim_colorscheme,
term_colorscheme 변수를 모두 solarized로 맞춤.
– ./gen-italics-terminfo.sh 실행해서 xterm-256colors-italics 터미널 타입
활성화
=> iPuTTY 0.63 이상 버전 사용하면 이탤릭 글꼴 적용(vim의 주석 부분 등)