soma0sd

코딩 & 과학 & 교육

반응형

Python은 "일단 작동은 하는 코드"와 "한눈에 기능을 알아볼 수 있는 코드"의 차이가 있습니다. 코딩할 때 알아보기 쉬운 방식으로 코드를 작성하면 유지관리에 도움이 됩니다. 또한, Sphinx를 사용해서 문서화를 할 때 엄청난 이득을 얻게 됩니다. 이름 짓기 예전과는 달리 VSCode와 같은 똑똑한 에디터들은 패키지를 가져오면 자동으로 모듈과 함수, 클래스의 이름을 가져옵니다. 마침표(.)를 입력하면 자동으로 선택메뉴가 나오고 화살표키로 선택한 뒤 엔터로 자동입력하는 방식이죠. 이 지능형 코드 완성(IntelliSense)기능을 최대한 활용하면 매번 패키지 소스코드를 들추지 않아도, 레퍼런스 문서를 뒤적이지 않아도 다음 일을 진행할 수 있으니 이 기능을 가진 편집기들을 많은 사람들이 사용하고 있습니..

Python 패키지 개발일지 04: 알기쉬운 파이썬 코드

이전 포스트에서는 깃허브(GitHub)에 패키지를 저장소 형태로 게시하는 방법을 소개했습니다. 이 작업은 깃허브 저장소를 패키지의 홈페이지로 사용하기 위한 것입니다. 무료로 소스코드와 홈페이지를 호스팅해주는 곳은 몇 군데 없으니까요. 게다가 버전관리와 이슈트래커 파일관리 협업 등 깃허브를 시용하는 것은 여러가지 이점을 가집니다. Python 패키지 개발일지 02: 깃허브에 패키지 올리기 이번에는 패키지를 배포하기 위한 파이썬 패키지 인덱스(PyPI)에 패키지를 업로드하여 다른 사람들이 손쉽게 만든 패키지를 이용할 수 있도록 하는 작업을 하도록 하겠습니다. PyPI 계정 등록 가장 먼저 PyPI에 계정을 생성해야 합니다. PyPI의 계정은 패키지를 프로젝트 단위로 관리할 수 있도록 해줍니다. 계정을 생성한..

Python 패키지 개발일지 03: PyPI에 패키지 올리기

일단 패키지를 온라인 저장소에 업로드한 뒤 파이썬 패키지 인덱스에 프로젝트를 등록하는 것 까지 해보도록 하겠습니다. 여기서는 각 과정과 그 과정에 필요한 서비스, 패키지, 응용프로그램들을 설명합니다. 깃허브 저장소 생성 깃허브(GitHub)에 계정을 등록한 후 저장소(Repository)를 생성합니다. 생성하는 저장소의 이름은 패키지 인덱스에 등록하는 이름과 직접적인 관련은 없으므로 여러개의 저장소를 관리한다거나 하는 경우에는 꼭 패키지 이름으로 하지 않아도 괜찮습니다. Initialize this repository with a README를 선택하면 아니라 복제와 편집이 가능한 저장소로 초기화합니다. 선택하지 않는 경우에 깃허브는 이 저장소를 위한 기존 저장소가 이미 있으며, 해당 저장소를 위해 자리..

Python 패키지 개발일지 02: 깃허브에 패키지 올리기

혹시나 실수하거나 제대로 작동하지 않는 스크립트를 공유할까봐 전전긍긍하며 테스트를 하고, 그것들을 패키지로 묶어내느라 포스팅을 조금 쉬었습니다. 현재 윈도우즈 전용 자동화(매크로) 프로그램을 작성하는 도구인 AutoWinPy를 29번의 커밋 끝에 0.3.1 버전까지 올렸습니다. 오늘부터 잘못된 길로 들어선 부분을 들어낸 패키지 개발 일지를 공개하려고 합니다. 패키지 이름 짓기 비슷한 패키지 참고하기 패키지를 개발하려고 한다면 그 패키지가 파이썬 패키지 인덱스(PyPI)에서 유일한 이름을 가져야 합니다. 제 경우 우선 제가 목표로 하는 것과 비슷한 기능을 하는 비슷한 기능을 하는 몇 개의 패키지를 찾았습니다. Pywinauto PyAutoGUI Gui_automation 겹치지 않으며 패키지의 특성을 나타..

Python 패키지 개발일지 01: 패키지 이름 정하기

파이썬(Python)의 내장 패키지 중 하나인 Tkinter 그래픽 유저 인터페이스를 작성할 수 있도록 해줍니다. 비슷한 기능을 하는 유명한 패키지로는 PyQt가 있습니다. Tkinter는 PyQt에 비해 자유도가 낮지만 그만큼 빠르게 개발할 수 있고, 파이썬 라이센스를 따르기 때문에 배포와 이용이 비교적 자유롭습니다. tkinter의 윈도우 아래의 스크립트를 사용하기 전에 app.ico를 준비해서 같은 디렉토리에 넣어두어야 제대로 작동합니다. "png to ico"등으로 구글링 하여 온라인 파일 변환 서비스를 이용하면 그림을 아이콘 파일(*.ico)로 쉽게 만들 수 있습니다. from tkinter import Tk, ttk class app(Tk): def __init__(self, **args): ..

Tkinter: 제목표시줄 교체

pywin32를 사용해서 윈도우의 핸들을 얻어 캡쳐를 하고자 할 때 캡쳐 범위를 지정하기 위해 디바이스에서 창이 그리는 사각형을 출력하는 win32.win32gui.GetWindowRect(hwnd)나 win32.win32gui.GetWindowRect(hwnd)를 사용하게 됩니다. def get_window_rect(hwnd): return win32gui.GetWindowRect(hwnd) 그러나 이 값을 이용해서 캡쳐를 해보면 창의 일부가 잘리는 것을 볼 수 있습니다. 스택오버플로우(영문)에서 찾아보니 윈도우 7 이후 그래픽 인터페이스 구현이 달라지는 바람에 벌어지는 일이라고 합니다. 췬도우의 실제 크기보다 작게 인식하는 바람에 생긴 문제인데요. spy++등을 이용하여 해당 값을 알고 있다면 해당하..

pywin32: GetWindowRect의 크기가 실제보다 작을 때

pywin32의 모듈인 win32gui를 이용하여 현재 열려있는 창의 이름과 핸들의 리스트를 얻도록 하겠습니다. 윈도우의 핸들은 비활성 창의 정보를 얻거나 명령을 내릴 때 사용합니다. 스크립트 이 스크립트는 python 3.6, 3.7에서 시험했습니다. from win32 import win32gui def getWindowList(self): def callback(hwnd, hwnd_list: list): title = win32gui.GetWindowText(hwnd) if win32gui.IsWindowEnabled(hwnd) and win32gui.IsWindowVisible(hwnd) and title: hwnd_list.append((title, hwnd)) return True output..

Python: 윈도우와 핸들 목록 얻기

기존의 개발환경 이미 파이썬(Python)을 써서 뭔가 하고 있기 때문에 사용하던 개발환경이 있습니다. 운영체제로는 윈도우즈 10을 사용하고 있고, 아나콘다(Anaconda)에서 제공하는 파이썬 배포판과 패키지 관리 프로그램인 conda를 사용하고 있습니다. 코딩을 위해서 사용하는 텍스트에디터는 비주얼 스튜디오 코드(VS Code)를 사용하고 있습니다. 이후의 설명은 이 상태에서 출발하는 것을 가정합니다. 어떤 매크로를 만들까 가장 먼저 고려할 점은 비활성 상태인 창을 컨트롤 할 수 있어야 한다는 것입니다. 관련 MSDN 문서(영문) 활성 창은 사용자가 현재 사용하고 있는 창입니다. 여러 창 중에서 가장 앞에 배치되어 있습니다. 비활성 창은 사용자의 입력이 없고, 활성창에 가려서 일부만 보이거나 완전히 ..

파이썬 매크로 제작: (1) 개발환경 구성

아나콘다(ANACONDA)는 과학/수학/통계 등을 위한 패키지가 미리 설치되어 있는 배포판과 함께 각종 도구를 패키지로 만든 통합개발도구입니다. 저도 이걸로 파이썬을 사용하고 있는데요. 현재 사용하고 있는 버전은 3.7.4입니다. 하지만 최근에 마운트 앤 블레이드 모드 개발을 뜯어보니 파이썬 2.X환경에서 제작되었고, 파이썬은 2.X와 3.X에 문법 차이가 심해서 실행할 수 없는 상황입니다. 하지만, 3.X 아나콘다를 설치했는데 2.X 아나콘다를 또 설치할 필요는 없습니다. 환경 만들기 아나콘다 네비게이터(ANACONDA Navigator)를 실행하면 왼쪽에 환경(environment) 탭이 있습니다. 생성(Create)을 눌러 환경을 새로 하나 만듭니다. 이름과 파이썬 버전을 선택합니다. 환경 이름은 ..

아나콘다 환경에서 여러 버전의 파이썬 사용하기

End of content

No more pages to load

◀ PREVNEXT ▶