SlideShare a Scribd company logo
1 of 18
Download to read offline
Windows 환경에서
Python 개발환경 설정하기
김준기
2014. 6. 29
연사 소개
▪ 현재
• 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]
오늘 할 이야기
▪ 뭔가 심각한 거 많이 하는 것 같지만,
오늘은 정말 기초적인 이야기하려고 왔습니다. :)
▪ 실제 개발 작업은 주로 Linux 서버를 이용하지만,
데스크톱PC는 Windows를 선호해요.
(GUI 안정적, 날개셋 한글입력기, 게임…)
▪ Microsoft에서 일할 때는 당연히 Windows가 기본 환경
• 뒤에 있을 Visual Studio PyTools 세션 잘 들어보세요~
• Windows에서도 자잘한 노가다 작업을 Python으로 해결하면 편합니다.
• ipython notebook 같은 것도 로컬 PC에서 바로 돌리면 편하겠죠?
목 차
▪ Python 기본 설치
• PATH 설정하기
• Windows용 패키지 찾기
• 여러 버전(2.x & 3.x) 동시에 사용하기
▪ 개발환경 관리 노하우
• 설정 파일 버전관리
• 자동 초기 설정 스크립트 소개
• PuTTY + tmux + vim 조합을 위한 solarized 테마 설정법
Python 기본 설치:
PATH 설정하기
▪ 공식 배포되는 installer로 설치한 다음 첫번째로 할 일!
(사실 installer에 기능이 있으나 기본으로 꺼져있음)
Python 기본 설치:
PATH 설정하기
▪ python.exe가 있는 곳 + Scripts, ToolsScripts 폴더 지정
• 예시 Python 설치 경로는 C:DevelopmentPython34
– 이렇게 버전 번호를 적으면 서로 다른 버전을 동시 설치할 때 구분하기 좋다.
• PATH 추가 경로
– C:DevelopmentPython34
– C:DevelopmentPython34Scripts
– C:DevelopmentPython34ToolsScripts
• Installer가 신경써주지 않는 Scripts와 ToolsScripts까지 추가해야 2to3라든지
ipython이라든지 하는 기본/패키지 제공 스크립트를 명령프롬프트에서 원활하게
사용할 수 있다.
Python 기본 설치:
Windows용 패키지 찾기
▪ 다들 한번쯤… pip install xxx 했는데 뭔가 잘 안 된 적 있죠?
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는 수동으로 해당 패키지 찾아서 설
치해야 함. 그래도 컴파일 안 해도 되는 게 큰 장점!)
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)
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 실행
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 실행
Python 기본 설치:
여러 버전 동시에 사용하기
▪ Tips
• 본인이 작성하는 .py 파일에는 shebang line을 적어두는 습관을 들이자.
(https://docs.python.org/3/using/windows.html#shebang-lines 참조)
• pip, ipython 등의 스크립트 사용할 때 항상 버전 확인하는 습관을 들이자.
(한쪽에만 설치되어 있거나 할 경우 헷갈릴 수 있음)
▪ 주의 사항
• 파일 이름이 똑같으면 PATH에서 앞쪽에 나오는 폴더 소속이 무조건 우선.
• 버전이 달라도 마찬가지이므로, 굳이 버전을 구분해야 하는 스크립트가 있다면 심
볼릭 링크를 활용하자.
개발환경 관리 노하우:
설정 파일 버전 관리
▪ 여러분은 개발환경 관리(?) 어떻게 하십니까?
▪ 새로운 서버가 생겼을 때, PC 포맷했을 때, …
• 요즘은 클라우드 시대라 VM 따위 생성했다 지웠다는 아무 일도 아닌 세상
• .vimrc 적어주는 것도 슬슬 귀찮다…
▪ 그러던 중 한 동아리 선배의 GitHub 저장소를 보게 되었다.
• https://github.com/netj/dotfiles
개발환경 관리 노하우:
자동 초기 설정 스크립트 소개
▪ 조금 더 자동화할 수는 없을까?
• 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 엔진을 이용해 설정 파일 생성·적용
개발환경 관리 노하우:
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 등)이 이에 맞춰 색상 코드를
출력하도록 해야 한다.
개발환경 관리 노하우:
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의 주석 부분 등)
개발환경 관리 노하우:
solarized 테마 설정법
▪ 적용한 결과
감사합니다.

More Related Content

What's hot

온라인 게임 처음부터 끝까지 동적언어로 만들기
온라인 게임 처음부터 끝까지 동적언어로 만들기온라인 게임 처음부터 끝까지 동적언어로 만들기
온라인 게임 처음부터 끝까지 동적언어로 만들기
Seungjae Lee
 
코드 생성을 사용해 개발 속도 높이기 NDC2011
코드 생성을 사용해 개발 속도 높이기 NDC2011코드 생성을 사용해 개발 속도 높이기 NDC2011
코드 생성을 사용해 개발 속도 높이기 NDC2011
Esun Kim
 
GDB와 strace로 Hang 걸린 Python Process 원격 디버깅
GDB와 strace로 Hang 걸린 Python Process 원격 디버깅GDB와 strace로 Hang 걸린 Python Process 원격 디버깅
GDB와 strace로 Hang 걸린 Python Process 원격 디버깅
Youngmin Koo
 
H3 2011 파이썬으로 클라우드 하고 싶어요
H3 2011 파이썬으로 클라우드 하고 싶어요H3 2011 파이썬으로 클라우드 하고 싶어요
H3 2011 파이썬으로 클라우드 하고 싶어요
KTH
 
Windows system - memory개념잡기
Windows system - memory개념잡기Windows system - memory개념잡기
Windows system - memory개념잡기
ChangKyu Song
 

What's hot (20)

2017 새싹교실 1교시
2017 새싹교실 1교시2017 새싹교실 1교시
2017 새싹교실 1교시
 
Python Recipes for django girls seoul
Python Recipes for django girls seoulPython Recipes for django girls seoul
Python Recipes for django girls seoul
 
파이썬 튜토리얼 (Python tutorial)
파이썬 튜토리얼 (Python tutorial)파이썬 튜토리얼 (Python tutorial)
파이썬 튜토리얼 (Python tutorial)
 
온라인 게임 처음부터 끝까지 동적언어로 만들기
온라인 게임 처음부터 끝까지 동적언어로 만들기온라인 게임 처음부터 끝까지 동적언어로 만들기
온라인 게임 처음부터 끝까지 동적언어로 만들기
 
PHP로 Slack Bot 만들기
PHP로 Slack Bot 만들기PHP로 Slack Bot 만들기
PHP로 Slack Bot 만들기
 
파이썬(Python) 소개
파이썬(Python) 소개파이썬(Python) 소개
파이썬(Python) 소개
 
[NEXT] Flask 로 Restful API 서버 만들기
[NEXT] Flask 로 Restful API 서버 만들기 [NEXT] Flask 로 Restful API 서버 만들기
[NEXT] Flask 로 Restful API 서버 만들기
 
휴봇-슬랙 OSX 설치
휴봇-슬랙 OSX 설치휴봇-슬랙 OSX 설치
휴봇-슬랙 OSX 설치
 
[2013.07.16] PythonKorea강남스터디 발표 - flask testing
[2013.07.16] PythonKorea강남스터디 발표 - flask testing[2013.07.16] PythonKorea강남스터디 발표 - flask testing
[2013.07.16] PythonKorea강남스터디 발표 - flask testing
 
코드 생성을 사용해 개발 속도 높이기 NDC2011
코드 생성을 사용해 개발 속도 높이기 NDC2011코드 생성을 사용해 개발 속도 높이기 NDC2011
코드 생성을 사용해 개발 속도 높이기 NDC2011
 
[NDC2016] TERA 서버의 Modern C++ 활용기
[NDC2016] TERA 서버의 Modern C++ 활용기[NDC2016] TERA 서버의 Modern C++ 활용기
[NDC2016] TERA 서버의 Modern C++ 활용기
 
Python study 1강 (오픈소스컨설팅 내부 강의)
Python study 1강 (오픈소스컨설팅 내부 강의)Python study 1강 (오픈소스컨설팅 내부 강의)
Python study 1강 (오픈소스컨설팅 내부 강의)
 
GDB와 strace로 Hang 걸린 Python Process 원격 디버깅
GDB와 strace로 Hang 걸린 Python Process 원격 디버깅GDB와 strace로 Hang 걸린 Python Process 원격 디버깅
GDB와 strace로 Hang 걸린 Python Process 원격 디버깅
 
Ryan Dahl의 Node.js 소개 동영상 해설 by doortts
Ryan Dahl의 Node.js 소개 동영상 해설 by doorttsRyan Dahl의 Node.js 소개 동영상 해설 by doortts
Ryan Dahl의 Node.js 소개 동영상 해설 by doortts
 
H3 2011 파이썬으로 클라우드 하고 싶어요
H3 2011 파이썬으로 클라우드 하고 싶어요H3 2011 파이썬으로 클라우드 하고 싶어요
H3 2011 파이썬으로 클라우드 하고 싶어요
 
소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안
소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안
소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안
 
동시성 프로그래밍 기초 in GO
동시성 프로그래밍 기초 in GO 동시성 프로그래밍 기초 in GO
동시성 프로그래밍 기초 in GO
 
Windows system - memory개념잡기
Windows system - memory개념잡기Windows system - memory개념잡기
Windows system - memory개념잡기
 
NDC2018 안드로이드+유니티 네이티브 프로파일링 삽질기
NDC2018 안드로이드+유니티 네이티브 프로파일링 삽질기NDC2018 안드로이드+유니티 네이티브 프로파일링 삽질기
NDC2018 안드로이드+유니티 네이티브 프로파일링 삽질기
 
Node.js in Flitto
Node.js in FlittoNode.js in Flitto
Node.js in Flitto
 

Viewers also liked

Network programming in python..
Network programming in python..Network programming in python..
Network programming in python..
Bharath Kumar
 

Viewers also liked (20)

Sublime Text 3 for python and django
Sublime Text 3 for python and djangoSublime Text 3 for python and django
Sublime Text 3 for python and django
 
간단한 블로그를 만들며 Django 이해하기
간단한 블로그를 만들며 Django 이해하기간단한 블로그를 만들며 Django 이해하기
간단한 블로그를 만들며 Django 이해하기
 
Python 이해하기 20160815
Python 이해하기 20160815Python 이해하기 20160815
Python 이해하기 20160815
 
Django로 쇼핑몰 만들자
Django로 쇼핑몰 만들자Django로 쇼핑몰 만들자
Django로 쇼핑몰 만들자
 
Django, 저는 이렇게 씁니다.
Django, 저는 이렇게 씁니다.Django, 저는 이렇게 씁니다.
Django, 저는 이렇게 씁니다.
 
AWS re:Invent 특집(1) – 파이선(Python) 개발자를 위한 AWS 활용 방법 (윤석찬)
AWS re:Invent 특집(1) – 파이선(Python) 개발자를 위한 AWS 활용 방법 (윤석찬)AWS re:Invent 특집(1) – 파이선(Python) 개발자를 위한 AWS 활용 방법 (윤석찬)
AWS re:Invent 특집(1) – 파이선(Python) 개발자를 위한 AWS 활용 방법 (윤석찬)
 
Python korea(emacs)
Python korea(emacs)Python korea(emacs)
Python korea(emacs)
 
QnA Blog Using Django - 회원가임/로그인폼, Post, 글보기
QnA Blog Using Django - 회원가임/로그인폼, Post, 글보기QnA Blog Using Django - 회원가임/로그인폼, Post, 글보기
QnA Blog Using Django - 회원가임/로그인폼, Post, 글보기
 
Scrum and kanban with jira
Scrum and kanban with jira Scrum and kanban with jira
Scrum and kanban with jira
 
웹 개발, 왜 어려운가?
웹 개발, 왜 어려운가?웹 개발, 왜 어려운가?
웹 개발, 왜 어려운가?
 
Python 개발자를 위한 최상의 무료 개발 도구 Visual Studio와 Visual Studio Code
Python 개발자를 위한 최상의 무료 개발 도구 Visual Studio와 Visual Studio CodePython 개발자를 위한 최상의 무료 개발 도구 Visual Studio와 Visual Studio Code
Python 개발자를 위한 최상의 무료 개발 도구 Visual Studio와 Visual Studio Code
 
Network programming in python..
Network programming in python..Network programming in python..
Network programming in python..
 
Go 1.설치와 세팅
Go 1.설치와 세팅Go 1.설치와 세팅
Go 1.설치와 세팅
 
Python Network Programming
Python Network ProgrammingPython Network Programming
Python Network Programming
 
Re: 제로부터시작하는텐서플로우
Re: 제로부터시작하는텐서플로우Re: 제로부터시작하는텐서플로우
Re: 제로부터시작하는텐서플로우
 
QnA blog using Django - ORM, 회원가입, 로그인/로그아웃
QnA blog using Django - ORM, 회원가입, 로그인/로그아웃QnA blog using Django - ORM, 회원가입, 로그인/로그아웃
QnA blog using Django - ORM, 회원가입, 로그인/로그아웃
 
Python, Development Environment for Windows
Python, Development Environment for WindowsPython, Development Environment for Windows
Python, Development Environment for Windows
 
개발자를 위한 공감세미나 tensor-flow
개발자를 위한 공감세미나 tensor-flow개발자를 위한 공감세미나 tensor-flow
개발자를 위한 공감세미나 tensor-flow
 
PyCon 12월 세미나 - 실전 파이썬 프로그래밍 책 홍보
PyCon 12월 세미나 - 실전 파이썬 프로그래밍 책 홍보PyCon 12월 세미나 - 실전 파이썬 프로그래밍 책 홍보
PyCon 12월 세미나 - 실전 파이썬 프로그래밍 책 홍보
 
PyCon 2015 - 업무에서 빠르게 활용하는 PyQt
PyCon 2015 - 업무에서 빠르게 활용하는 PyQtPyCon 2015 - 업무에서 빠르게 활용하는 PyQt
PyCon 2015 - 업무에서 빠르게 활용하는 PyQt
 

Similar to Python Korea 2014년 6월 세미나 - Windows 환경에서 Python 개발환경 세팅하기

게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal
게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal
게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal
OnGameServer
 
Python packaging
Python packagingPython packaging
Python packaging
Ji Hun Kim
 
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
Jeongkyu Shin
 
커뮤니티와 함께한 예비개발자 성장기- 조성수님
커뮤니티와 함께한 예비개발자 성장기- 조성수님커뮤니티와 함께한 예비개발자 성장기- 조성수님
커뮤니티와 함께한 예비개발자 성장기- 조성수님
NAVER D2
 
도구를 활용한 더 나은 웹 개발: Yeoman
도구를 활용한 더 나은 웹 개발: Yeoman도구를 활용한 더 나은 웹 개발: Yeoman
도구를 활용한 더 나은 웹 개발: Yeoman
Jae Sung Park
 

Similar to Python Korea 2014년 6월 세미나 - Windows 환경에서 Python 개발환경 세팅하기 (20)

JetsonTX2 Python
 JetsonTX2 Python  JetsonTX2 Python
JetsonTX2 Python
 
[부스트캠프 Tech Talk] 최재필_P 스테이지에서 Git으로 협업하기
[부스트캠프 Tech Talk] 최재필_P 스테이지에서 Git으로 협업하기[부스트캠프 Tech Talk] 최재필_P 스테이지에서 Git으로 협업하기
[부스트캠프 Tech Talk] 최재필_P 스테이지에서 Git으로 협업하기
 
2020년 5월 16일 개발 이야기 정리
2020년 5월 16일 개발 이야기 정리2020년 5월 16일 개발 이야기 정리
2020년 5월 16일 개발 이야기 정리
 
게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal
게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal
게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal
 
파이썬 소개
파이썬 소개 파이썬 소개
파이썬 소개
 
제로부터시작하는 Git 두번째 이야기
제로부터시작하는 Git 두번째 이야기제로부터시작하는 Git 두번째 이야기
제로부터시작하는 Git 두번째 이야기
 
청강대 특강 - 프로젝트 제대로 해보기
청강대 특강 - 프로젝트 제대로 해보기청강대 특강 - 프로젝트 제대로 해보기
청강대 특강 - 프로젝트 제대로 해보기
 
프로젝트 관리 및 지켜야 할 사항들
프로젝트 관리 및 지켜야 할 사항들프로젝트 관리 및 지켜야 할 사항들
프로젝트 관리 및 지켜야 할 사항들
 
[123] electron 김성훈
[123] electron 김성훈[123] electron 김성훈
[123] electron 김성훈
 
Python packaging
Python packagingPython packaging
Python packaging
 
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기
 
ant로 안드로이드 앱을 자동으로 빌드하자
ant로 안드로이드 앱을 자동으로 빌드하자ant로 안드로이드 앱을 자동으로 빌드하자
ant로 안드로이드 앱을 자동으로 빌드하자
 
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
 
소스트리(SourceTree)로 배우는 Git 사용법
소스트리(SourceTree)로 배우는 Git 사용법소스트리(SourceTree)로 배우는 Git 사용법
소스트리(SourceTree)로 배우는 Git 사용법
 
레가시 프로젝트의 빌드 자동화
레가시 프로젝트의 빌드 자동화레가시 프로젝트의 빌드 자동화
레가시 프로젝트의 빌드 자동화
 
Python 생태계의 이해
Python 생태계의 이해Python 생태계의 이해
Python 생태계의 이해
 
커뮤니티와 함께한 예비개발자 성장기- 조성수님
커뮤니티와 함께한 예비개발자 성장기- 조성수님커뮤니티와 함께한 예비개발자 성장기- 조성수님
커뮤니티와 함께한 예비개발자 성장기- 조성수님
 
공간정보아카데미 - Day1 오픈소스개발 일반
공간정보아카데미 - Day1 오픈소스개발 일반공간정보아카데미 - Day1 오픈소스개발 일반
공간정보아카데미 - Day1 오픈소스개발 일반
 
김찬웅_그룹웨어에 새 에너지를_NDC15
김찬웅_그룹웨어에 새 에너지를_NDC15김찬웅_그룹웨어에 새 에너지를_NDC15
김찬웅_그룹웨어에 새 에너지를_NDC15
 
도구를 활용한 더 나은 웹 개발: Yeoman
도구를 활용한 더 나은 웹 개발: Yeoman도구를 활용한 더 나은 웹 개발: Yeoman
도구를 활용한 더 나은 웹 개발: Yeoman
 

Python Korea 2014년 6월 세미나 - Windows 환경에서 Python 개발환경 세팅하기

  • 1. Windows 환경에서 Python 개발환경 설정하기 김준기 2014. 6. 29
  • 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이라든지 하는 기본/패키지 제공 스크립트를 명령프롬프트에서 원활하게 사용할 수 있다.
  • 7. Python 기본 설치: Windows용 패키지 찾기 ▪ 다들 한번쯤… pip install xxx 했는데 뭔가 잘 안 된 적 있죠?
  • 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의 주석 부분 등)
  • 17. 개발환경 관리 노하우: solarized 테마 설정법 ▪ 적용한 결과