본문 바로가기

IT/프로그래밍/Python

Python에서 Dropbox SDK를 빌드할때 발생하는 bug 해결책 Python에서 Dropbox sdk를 사용하는 app을 만들고 있는 와중에 py2app을 이용해서 빌드한 후 실행을 하면 테스트 과정중에서는 접하지 못했던 오류가 발생한다. NotImplementedError: resource_filename() only supported for .egg, not .zip 해결 방법을 찾아보다가 해당 링크에서 동일한 문제를 발견했다. 참조링크 (위 블로그의 작성자는 py2exe를 사용하였고 나같은 경우에는 py2app을 사용한 것이지만 어차피 distutils을 상속받아서 사용하기에 큰 차이점은 없다.) 참조링크의 방법을 이용해서 문제를 해결하였다. 프로그램의 오류가 발생하고 난 후에 osx에서 콘솔을 열면 프로그램 log 데이터들을 확인할 수 있는데 오류가 발생한 위.. 더보기
Python 에서 Dropbox SDK 이용하기 Python과 Dropbox 연동 했던 부분에 대한 기록을 남겨둔다. 우선 Dropbox의 개발자 사이트로 접속하면 dropbox api에 대한 문서 및 사용법에 대한 부분이 정리가 아주 잘 되어있다. OAuth 가이드의 설명 부분도 이미지를 이용한 방식이 보기도 좋고, (개인적 취향으로 다른 서비스들의 설명보다 보기 좋았음...) 우선 사용을 하려면 다른 서비스들과 마찬가지로 APP 등록을 해야한다. 앱 등록을 하려면 위의 화면과 같이 Drop-ins app, Dropbox SDK app 둘중에 선택을 해야하는데, python용 SDK 사용을 위해서는 Dropbox SDK를 사용해야 한다. 그리고 drop-ins는 웹, 모바일앱을 위한 용도로 사용하기에 좀더 최적화 된듯 하다. dropbox SDK를 .. 더보기
PyCrypto를 이용해서 AES방식으로 암호화 하기 Python에서 암호화를 위해서 사용한것을 잊어먹지 않기 위해서 작성합니다. Python 에서 AES 암호화를 위해서 Pypi 검색을 해보니 너무 많아서 어떤걸 사용해야 할지 모르겠다. 개인적으로 보기에 비교적 많이 사용된다고 느낀 PyCrypto, M2Crypto 두 가지 중에서 PyCrypto를 이용해서 개발했다. 어찌 보면 상관없지만 그냥 비교를 해놓은 글이 있어서 참조. Using PyCrypto instead of M2Crypto on Google App Engine 내가 참조하기 위해서 쓴 글이다 보니 코드 위주로만 작성한다. 우선 pip에서 PyCrypto를 설치해놨다고 생각하고 쓴다. 전체 코드 (링크를 참조해서 작성) # -*- coding: utf-8 -*- from Crypto.Cip.. 더보기
Python에서 I18N 적용하기 요즘 웹사이트나 프로그램들을 보면 다양한 언어를 지원하는 것을 많이 본다. 나도 개인적으로 진행중인 프로젝트에서 다국어를 지원해 보고자 시도했던 방법을 여기에 작성한다. 개발환경은 osx 10.9.5, python 2.7 이다. python에는 gettext라는 기본 모듈이 있다. 해당 모듈을 사용하면 비교적 간단하게 다국어의 지원이 가능하다. 우선 gettext를 test할 파일을 만들어 보자. 파일명은 gettext_test.py 로 정했다. # gettext_test.py import gettext t = gettext.translation('gettext_test', 'locale', languages=['ko'], fallback=True) _ = t... 더보기
Python 두가지 상속 방법의 차이점 python에서 상속의 경우 두가지 방법이 존재한다. 첫번째 방법 :super method를 이용한 방법 class ChildA(parent) : super(ChildA, self).__init__(args) 두번째 방법 : parent를 이용한 방법 class ChildB(parent) : parent.__init__(self, args) 이렇게 두가지의 방법이 있다. 인터넷을 찾아보니 이미 나와같은 궁금증을 올린 사람들이 있다. [링크] 더 찾아보니 한글로도 있다. [http://techbard.tistory.com/2930] 내용들을 다 참조해서 보았을때 ChildA의 상속방식의 경우 부모의 __init__ 메소드를 직접 참조하였기에 parent 클래스가 수정될 경우 해당클래스를 상속받는 모든 클래.. 더보기
Mac환경에서 python으로 clipboard 값 가져오기 개인적으로 진행하고 있는 프로젝트에서 Python을 이용하여 mac환경에서 wxPython으로 개발을 하고 있는데 wxPython이 mac 환경을 제대로 지원하지 않다보니 font의 인코딩 문제라던지 여러가지 자잘한 버그들이 많이 발생을 한다. 이번에도 클립보드에 있는 값을 가져오기 위해서 처음에는 wx에서 기본으로 지원하는 Clipboard함수를 사용하였는데 clipboard의 값을 제대로 가져오지 못하고 깨져서 나온다. 해당문제를 해결하는 방법을 찾아본 결과 mac에서는 방법이 두가지 있었다. subprocess 모듈을 이용하는 방법 2. PyObjC 모듈을 이용하는 방법 하나씩 보자~ 개발 환경 : mac os : 매버릭스, python : 2.7.9, wxPython : 3.0.2.0 1. sub.. 더보기