파이썬 책을 보다가 예전부터 가지고 있던 질문 중에 하나인 "파이썬 프로젝트에 적합한 디렉토리 구조"가 무엇인지 궁금해져서 조사를 시작했다.

간단한 프로젝트인 경우에는 디렉토리 구조가 큰 문제가 안되겠지만 몇 달씩 작업을 하는 프로젝트의 경우에는 디렉토리 구조을 잘 잡는 것도 중요한 문제 중에 하나다. Java 쪽에서는 이미 maven을 이용해서 디렉토리 구조를 생성하는 것이 사실상 표준이 됐는데, 파이썬이나 다른 언어에서는 이런 도구들은 없는지, 사람들은 보통 어떤 구조를 선호하는지, 혹시 어느 정도 표준안이 있는데 내가 모르고 있는 것은 아닌가 싶어 조사를 시작했다.

일단 구글링부터 시작했는데 나만 이런 생각을 하고 있었던 것은 아니었는지 이와 관련된 질문([2],[3])이나 글([1],[4],[5])들을 쉽게 찾을 수 있었다. 알고 보니 파이썬 쪽에서는 이게 패키징 문제와 엮여서 꽤나 중요한 문제였나보다. 파이썬의 패키징 프로그램(distutil, setuptools)의 문제로 인해 프로젝트 디렉토리 구조를 어떻게 잡느냐에 따라 패키징하고 배포 과정에서 버그가 많이 발생했기 때문이다. [5]를 보면 배포를 위해 파이썬 프로그램을 패키징하는데 정말 많은 신경을 써야 하는구나 싶다. 

그래서 어떤 글들을 보면 아래와 같이 프로젝트 디렉토리(여기서는 "funniest") 밑에 동일한 이름의 메인 패키지 디렉토리가 나온다. 패키킹 도구가 디렉토리 구조를 그대로 사용하기 때문에 메인 패키지 이름을 바꿀 수 없는 것 같다. 대부분의 경우 프로젝트 이름과 그 프로젝트에서 개발한 패키지 이름 (또는 프로그램 이름)이 동일하기 때문에 이런 일은 자주 발생한다.
1
2
3
4
funniest/
    funniest/
        __init__.py
    setup.py
cs

그런데 [1]을 보면 이것은 이미 옛날 이야기이고 아래와 같이 "src" 디렉토리를 사용할 것을 권하고 있다.  
├─ src
│  └─ packagename
│     ├─ __init__.py
│     └─ ...
├─ tests
│  └─ ...
└─ setup.py

당분간은 내가 작성하는 코드들이 패키징되서 배포될 일도 없고, 개인적으로 동일한 이름의 디렉토리가 있는 것보다 이게 더 보기 좋기 때문에 앞으로 내가 담당하는 프로젝트에서는 "src" 디렉토리를 만드는 안을 선택하려고 한다.

"src" 디렉토리 사용 여부 말고도 이슈가 하나 더 있는데 바로 단위 테스트용 코드를 어디에 놓을 건인가 하는 문제다. 프로젝트 최상위 디렉토리 밑에, 즉 src와 동일한 곳에 "tests" 디렉토리를 만드는 것은 상당히 보편화된 것 같다. 그런데 여기에다만 테스트 코드를 놓을 것인지, 아니면 src/pck1 밑에 tests 디렉토리를 만들고 실제 테스트 코드는 여기에 놓을 것인지에 대해서는 사람마다 다르다. 개인적으로는 $PROJECT_ROOT/tests에 넣는 것이 실행 코드와 테스트 코드를 더욱 명확하게 분리할 수 있기 때문에 더 좋다고 생각한다.

여기에 사전이나 메타 데이터를 저장하는 rsc/, 문서를 저장할 docs/, 유틸성 스크립트를 저장할 scripts/, 마지막으로 README.rst까지 포함하면 아래와 같은 구성이 된다. 

$PROJECT_ROOT
 ├─ README.rst
 ├─ docs
 ├─ rsc
 ├─ src
 │  ├─ packagae
 │     ├─ __init__.py
 │     └─ ...
 │  └─ main.py ....
 ├─ tests
 │  ├─ package
 │     └─ ...
 |  └─ test_main.py
 └─ setup.py

꼭 필요한 것들만 넣어서 간단하게 만들려고 해도 꽤 복잡해졌다. 게으름을 추구하는 똑똑한 프로그래머분들이 이런 귀찮은 작업을 매번 반복하지 말라고 cookiecutter([6], [7])라는 것을 만들었다. 그런데 이건 단위 테스트는 물론이고 CI, code coverage 도구 연동, 다중 python 버전 지원 등등 기능이 워낙 많아져서 회사 프로젝트처럼 사용할 수 있는 도구도 한정되고, 외부로 코드 공개를 할 수도 없는 경우에는 배보다 배꼽이 더 클 것 같다.

프로젝트 디렉토리 구조는 프로젝트를 새로 시작할 때마다 신경쓰였던 문제였는데, 마침 급한 일도 끝난 시점에 이렇게 조사, 정리를 하게 되서 나름 뿌듯하다. 이 주제가 생각만큼 단순하지 않고 그동안 많은 이슈들이 있었다는 점에서 한편으로는 놀랍기도 했고, 다른 한편으로는 새로운 사실들을 많이 알게되서 재밌기도 했다.


참고자료



WRITTEN BY
trowind
자연어처리, 프로그래밍, 여행, 음식, 삶의 기록

트랙백  0 , 댓글  0개가 달렸습니다.
secret

이제 일본에 온지도 벌써 3주 째가 되었다. 한국에 있을 때도 그랬지만, 일본에 와서도 1~2 주 동안은 적응하느라 이래저래 바빠서 포스팅을 못했는데 이제부터라도 꾸준히 해보려고 한다.


일본에서의 첫 번째 포스팅 주제는 우리 부부가 다니는 "동경중앙교회"이다. "다니는"이라고 하니까 뭔가 오래동안 다닌 곳처럼 들리는데 우리 부부은 일본에 온지 고작 3주 째이고, 그래서 당연히 이 교회에 다닌 지도 3주 밖에 안되었다. 


처음에 일본에 올 때 우리 부부와 주변 분들이 걱정했던 것 중에 하나가 바로 올바른 교회를 찾는 것이었다. 일본이 원래 다신교 문화가 강한 곳이라 기독교가 많이 퍼지지 않았다는 것은 어느 정도 알고 있었다. 이런 것은 다른 나라에서도 볼 수 있는 일종에 문화적 특성이라 크게 걱정할 부분은 아니라고 생각했었다. 그런데 아내가 유학원에서 상담을 받을 때 그곳에서 오리엔테이션 한 내용 중에 하나가 바로 "이상한 교회"가 굉장히 많으니 조심하라는 것이었다. 그 유학원은 기독교와 전혀 상관없는 기관인데도 이런 교육을 하는 것을 보고 문제가 상당히 심각하다는 것을 느꼈다. 한국에서 우리가 일본에서 다닐 교회를 미리 찾아보는 과정에서도 이런 문제들을 조심하라는 글을 심심치 않게 볼 수 있었다.  그래서 더욱 주의하면서 우리가 다닐 교회를 물색하였고, 그러던 와중에 이곳 동경중앙교회를 알게 되었다.


[교회 건물 모습. 2007년에 건축한 건물이라고 한다. 2층에 예배당이, 지하 1층에 식당이 있다.]




[타카다노바바쪽에서 본 건물. 계단에 처진 찰창(?) 덕분에 건물 찾기는 쉬운 편이다]







우리가 다니는 동경중앙교회는 타카다노바바역 근처에 있고, 위치로 보면 와세다 대학 공대 캠퍼스의 북쪽에 위치하고 있다. 한인 타운이 있는 신오쿠보 근처, 즉 와세다 대학 공대 캠퍼스 남쪽에도 동일한 이름의 교회가 있어서 처음에는 인터넷 상에서 정보를 찾을 때 꽤 혼란스러웠다. 신오쿠보에 있는 동경중앙교회도 꽤 큰 (아마 우리가 다니는 교회보다 교인이 많은 것 같다) 교회이다. 





우리 교회는 주일 예배가 많지 않다. 오전에 1부 (9시 30분), 2부(11시) 예배가 있고 오후에는 청년부를 위주로 하는 찬양 예배가 있다. 교회 홈페이지는 따로 없고 다음 카페에 페이지를 개설해서 사용하고 있는 듯 하다. 교회에 대한 자세한 정보와 위치는  이곳에서 확인할 수 있다.


2부 예배가 끝난 후에는 교인들과 지하 1층에서 식사를 한다. 식사 메뉴는 단촐하지만 식탁마다 김치가 푸짐하게 놓여 있는 것이 인상적이다. 여담이지만 이제는 교회 식당을 보면 "나중에 여기서 설거지 봉사할때 어떻게 해야 하지, 동선은 어떻게 되지" 등등을 먼저 생각하게 된다^^.


당연하 이야기지만 처음 이 교회에 정착하기로 한 것에는 목사님의 설교가 결정적이었다. 그 전에 한국에서 다녔던 주님 기쁨의 교회와는 교단이 다르기 때문인지 말씀을 해석하는 부분에서는 약간의 차이가 있다. 하지만 큰 맥락에서는 성경의 말씀을 있는 그대로 해석하려고 하고 뭔가 잘못된 주장을 하지 않는다고 느껴졌다. 또한 임태호 담임 목사님이 매우 열성적으로 설교하는 모습이나 청년부 사람들의, 비록 수가 많지는 않았지만, 밝고 자유로운 모습에서 '이 교회는 괜찮겠다'라는 생각이 들었다.


일본에서 한인 교회를 찾는 분들에게 한가지 당부하고 싶은 것은 가능하면 "재일대한기독교회"에 소속된 교회에 가라는 것이다. 그나마 이렇게 하는 것이 이상한 교회를 선택하지 않을 가능성이 높다. 한가지 안타까운 것은 저곳 홈페이지를 들어가도 정작 내가 가려고 하는 교회가 재일대한기독교회 소속인지를 알 방법이 마땅히 않다는 점이다. 그래서 저곳에서 검색을 해서 가고자 하는 교회에 대한 소식이 나오는지를 보거나, 아니면 반대로 가려는 교회가 재일대한기독교회 소속이라고 정확히 밝히는지 확인해야 한다.


비록 예배당도 작고 교인도 많지 않은 교회이지만 건강한 교회를 만나서 참 다행이라고 생각한다. 앞으로 일본에서 생활하는 동안 신앙을 읾지 않고 잘 생활할 수 있을 것 같다.


마지막으로 한가지. 교회는 골목 안쪽에 위치하고 있어 조용하지만, 5분 정도만 걸어나오면 바로 타카다노바바 번화가여서 근처에 맛집들도 많고 카페도 많다. 당연 스타벅스나 도토루도 있는데, 공부를 할 목적이라면 R.O.STAR라는 샌드위치 카페를 추천한다. 이곳은 매장도 넓고 1인용 테이블도 많이 배치되어 있고 사람들도 대부분 노트북이나 책을 펴놓고 공부하고 있어서 오히려 스타벅스보다 공부하기에는 적합하다. 다만 사람이 많아서인지 wi-fi가 제대로 동작하지 않는 단점이 있다. 이곳에 대해서는 다음 기회에 포스팅해볼 생각이다.




WRITTEN BY
trowind
자연어처리, 프로그래밍, 여행, 음식, 삶의 기록

트랙백  0 , 댓글  1개가 달렸습니다.
  1. 비밀댓글입니다
secret



  • 별점: 1/5
  • 평가: 제목과는 다르게 Spark에 대한 내용보다는 다른 내용들이 주를 이루고 있는 느낌. Python에서 데이터 분석을 위해 자주 사용되는 여러 패키지를 소개하다보니 정작 Spark에 대해서는 깊이있게 다루지 않고 있다. 나라면 다른 사람에게 추천하지 않겠다.




WRITTEN BY
trowind
자연어처리, 프로그래밍, 여행, 음식, 삶의 기록

트랙백  0 , 댓글  1개가 달렸습니다.
  1. 좋은글 감사
secret

벌써 2016년 하고도 하루가 지났다.


이번 연휴에는 (지난 연말에 미처 하지 못한) 2015년 한해를 돌아보고 올해를 계획하는 작업을 계속 하고 있다. 그 일환으로 작년에 읽었던 책들을 한번 정리해보았다. 총 21권의 책을 읽었는데 이 숫자는 아직 읽고 있는 책, 논문이나 프로그래밍 관련 서적, 읽다가 별로여서 중간에 그만둔 책들은 제외한 것이다. 생각보다 많은 책을 읽었다는 사실에 나도 좀 놀랬다.


이렇게 읽은 책들을 내 나름대로, 즉 나에게 얼마나 많은 영감, 감동 또는 교훈을 주었는지라는 매우 주관적인 기준으로 나열해보면 다음과 같다.


  1. 해커와 화가
  2. 목적이 이끄는 삶
  3. 제로 투 원
  4. 통계의 힘: 실무편
  5. 불황 10년
  6. 경제학이 사람을 행복하게 할 수 있을까?
  7. 틀 안에서 생각하기
  8. 당신이 경제학자라면
  9. 그리스인 조르바
  10. 살인자의 기억법
  11. 왕의 재정
  12. FBI 행동의 심리학
  13. 위대한 개츠비
  14. 88만원 세대
  15. 권력의 종말
  16. 당신은 구글에서 일할만큼 똑똑한가?
  17. 하버드 생각 수업
  18. 거의 모든 것의 정리법
  19. 하버드 피드백 기술
  20. 내가 공부하는 이유
  21. 잡담이 능력이다


솔직히 고백하자면 이 중에 몇몇 책은 내용이 잘 기억이 나지 않아 후순위로 밀린 것들도 있다. 그러니 혹시라도 이 포스트를 보는 사람은 너무 순위에 의미를 두지 않았으면 좋겠다.


내가 올해 가장 인상적으로 뽑은 책은 "해커와 화가"이다. 이 책에 대해서는 따로 포스팅도 했는데, 내용이 궁금하다면 인터넷 상에서 해커와 화가 부분만 찾아서 읽어볼 수 있다(이 책은 여러 편의 에세이를 모아서 출간한 것인데, 2장의 제목이 해커와 화가이다.) 


작년에 읽은 책들의 경향을 살펴보면 우선 경제학 관련 서적이 많이 눈에 띈다. 이것은 내가 작년에 경제학을 공부하고 싶어서 이쪽 부류의 책들을 많이 읽은 까닭이다. 그리고 기독교 서적도 포함되어 있는데 2~3년 전의 나와는 많이 달라진 부분이다. 고전(또는 세계 명작^^)에 속하는 책도 2권 읽었다. 위대한 개츠비는 너무 기대를 해서인지 조금은 실망스러웠다. 그에 반해 그리스인 조르바는 나에게 강렬한 인상을 남겼다.


이렇게 한 해 동안 읽은 책을 정리해보니 뭔가 뿌듯하다. 올해에는 책을 읽으면서 좀 더 많은 메모를 하고 포스팅도 해서 책 내용을 더욱 잘 정리할 수 있도록 하려고 한다.


WRITTEN BY
trowind
자연어처리, 프로그래밍, 여행, 음식, 삶의 기록

트랙백  0 , 댓글  0개가 달렸습니다.
secret


해커와 화가
국내도서
저자 : 폴그레이엄 / 임백준역
출판 : 한빛미디어 2014.01.06
상세보기



읽은 기간: 2015.12.28~30


연말이라 대부분 휴가를 떠나서 사무실이 무척 한가하다. 모처럼만에 사무실에서 여유를 부리며 인터넷에서 이것 저것을 찾아보다가 우연히 해커와 화가의 일부분을 인용한 글을 보게 되었다.


초등학교 시절에 선생님이 가르쳐준 대로 연필이 잡히지 않아서 괴로워했던 것처럼, 나는 오랫도안 이런 프로그래밍 방식에 대해서 남몰래 부끄러워했다. 하지만 내가 그 당시에 화가나 건축가 갈은 다른 창조자들이 일하는 방식을 알았더라면 내가 프로그래밍 하는 방식을 지칭하는 특별한 이름이 있다는 사실을 알 수 있었을 것이다. 그 이름은 바로 스케치이다. 적어도 내가 보기에 대학 시절에 내가 배운 프로그래밍 방식은 전부 잘못되었다. 소설가, 화가, 그리고 건축가가 그런 것처럼 프로그램이란 전체 모습을 미리 알 수 있는 것이 아니라 작성해 나가면서 이해하게 되는 존재이다.


한동안 내가 고민했던 문제에 대한 명쾌한 설명이었다. 곧바로 전체 글을 읽고 싶어서 이래저래 알아보다가 다행히 회사 도서관에서 바로 빌려볼 수 있었다. 이 책은 사실 프로그래밍 분야에서 고전으로 손꼽히는 책이다. 2005년도에 한빛미디어에서 출간되었다가 한동안 절판되었는데 다행히 작년에 다시 발매가 되었다. 만약 오늘 도서관에서 대출을 할 수 없었다면 퇴근길에 서점에 들려 구매했을 것이다.


이 책은 저자 폴 그레이엄이 자신의 홈페이지에 올린 컬럼 중에 몇 개를 선택해서 책으로 출간한 것이다. 이곳에는 책에 있는 글들 뿐만 아니라 최근까지 올라온 저자의 다른 글들을 볼 수가 있다. 물론 영어로.


이 책에서 그는 상당히 도발적이고 새로운 생각을 펼쳐내고 있다. 혹자의 평가처럼 어떤 부분은 다소 편향적인 부분도 있다. 이를테면 부의 분배에 관한 문제나 Lisp 언어의 우월성, 스타트업에 대한 (매우 매우) 긍적적인 시각 등등. 하지만 이러한 주장에는 자신 나름대로의 분명한 이유가 있고 이를 논리적으로 기술하였다. 그래서 그의 주장에 반대하는 사람에게도 이 책은 즐거운 지적 도전이 된다.


개인적으로 책이 너무 맘에 들어서 구매하기로 결정했다. 맘에 드는 부분들, 소개하고 싶은 부분들은 책을 구입해서 다시 한번 읽으면서 포스팅하려고 한다.


WRITTEN BY
trowind
자연어처리, 프로그래밍, 여행, 음식, 삶의 기록

트랙백  0 , 댓글  0개가 달렸습니다.
secret