본문 바로가기

Software80

프로세스 이름으로 PID 번호 구하기 이름으로 해당 프로세스의 PID 번호를 구하는 방법입니다. 위 작업 관리자 캡처 화면의 경우 Notepad.exe의 PID는 5528입니다. 그런데 이 번호는 메모장이 실행될 때마다 변경되기 때문에 PID가 필요한 경우 유용하게 사용할 수 있습니다. #include #include DWORD GetProcessByFileName(LPWSTR name) { DWORD process_id_array[1024]; DWORD bytes_returned; DWORD num_processes; HANDLE hProcess; WCHAR image_name[MAX_PATH] = { 0, }; DWORD i; EnumProcesses(process_id_array, 1024 * sizeof(DWORD), &bytes_r.. 2021. 8. 18.
Pyinstaller 패키징 때 PyQt ui 파일 포함시키는 방법(여러개도 됨) 문제점 파이썬으로 GUI 프로그램을 만들 때 PyQt를 애용하고 있습니다. PyQt는 ".ui"라는 확장자를 사용하는 별도의 GUI 리소스 파일이 있어서 파이썬에서 이 UI파일을 읽어오기만 하면 되기 때문에 아주 편리하게 사용할 수 있습니다. 그래서 UI가 약간 수정이 있다 해도 메인 소스를 손댈 필요가 없어서 생산성 측면에서 큰 장점이 있습니다. 그런데 이렇게 별도의 UI 파일이 있는 프로그램은 Pyinstaller로 패키징 할 때 리소스 파일이 누락되어서 패키징이 제대로 되지 않을 때가 있습니다. 제가 경험해본 바로는 UI 파일을 스크립트에서 불러올 때 상대 경로로 접근하는 경우 Pyinstaller로 패키징 할 때 UI가 누락되는 걸 경험했습니다. 그래서 이런 경우는 UI파일을 참조할 때 절대 경로.. 2021. 7. 22.
pip upgrade 에러 - 엑세스가 거부, No module named 'pip' pip 업그레이드 중에 발생할 수 있는 에러 해결법입니다. pip 모듈을 사용하다 보면 가끔 이런 안내를 만나게 됩니다. pip의 새로운 버전이 있으니 업그레이드를 하라는 건데요. 이런 안내를 받고 아무 생각 없이 이렇게 업그레이드를 시켰습니다. pip install python-dev-tools 그럼 이런 경고를 만날 수 있는데요. 서버에서 새로 설치할 pip정보를 검색한 후에 정보가 확인되면 컴퓨터에 깔려있는 이전 버전의 pip를 지우고 나서 새로운 버전을 설치하는 과정으로 진행이 되는 것 같습니다. 그런데 원래 깔려있던 pip를 지우는 중에 pip.exe에 접근을 못해서 에러가 발생합니다. 이게 참 당연한 건데 저는 생각도 안 해보고 뭔가 문제가 있다고 생각했었습니다. pip가 알아서 다 잘하니까 .. 2021. 7. 16.
selenium사용하지 않고 네이버쇼핑 검색결과 크롤링하기 네이버 쇼핑의 검색 결과가 필요해졌습니다. 검색 페이지 크롤링하면 되니까 어렵지 않게 할 수 있을 거라고 생각했었는데 그게 아니었습니다. 대신 검색정보를 담고 있는 JSON파일을 찾을 수 있었고 더 쉬운 방법으로 해결이 되어서 내용을 남깁니다. 크롤링의 기본은 사이트의 구조를 파악하는 일이죠. 저는 특정 카테고리의 해외직구 제품 네이버 랭킹 1~100위 제품을 가져올 계획이고 여기서 그 카테고리는 TV입니다. 먼저 해당 페이지를 분석해보겠습니다. "네이버 > 쇼핑 > 카테고리TV > 해외직구"로 이동합니다. F12 or Ctrl+Shift+I 를 눌러서 "개발자 도구"를 열어줍니다. 여기서는 로딩되는 웹페이지의 모든 정보를 볼 수 있습니다. 그리고 좌측 상단의 마우스 모양의 버튼 or Ctrl+Shift.. 2021. 7. 9.
Pyinstaller로 변환한 exe 파일의 실행 경로 찾기 Pyinstaller로 파이선 스크립트를 실행파일로 변환했을 때 겪을 수 있는 경로 문제에 대한 이야기입니다. 프로그램 동작중에 데이터 파일을 가져오거나 저장해야 할 일이 있을 때 파이썬 스크립트 상태에서 실행할 때는 아무런 문제가 없었는데 Pyinstaller로 패키징을 한 후에 실행을 하면 똑같은 위치에 멀쩡히 잘 있는 데이터 파일을 찾지 못한다고 에러가 뜨거나 파일을 저장했다는데 엉뚱한 곳에 저장을 해서 난감한 경험을 격으셨다면 끝까지 읽어보시고 해결해보세요. 본 포스팅은 프로그램의 runtime과 관련된 내용으로 pyinstaller의 기술문서인 아래 링크를 참고하였습니다. 자세히 공부를 하고 싶다 하시는 분은 링크의 문서를 다 읽어보시면 좋을 것 같고요. 난 결론만 있으면 돼 하시면 아래 글을 .. 2021. 7. 8.
pyinstaller 에러 virtualenv로 해결하기 (Python 3.8.10 버전은 피하세요) 파이썬 스크립트를 ". exe" 실행파일로 변환해 주는 "pyinstaller"에 대해서 언급한 적이 있었습니다. pyinstaller - 파이썬 코드를 실행파일(.exe)로 변환 ".py" 확장자의 파이썬 코드는 매우 작은 용량이지만 방대한 일을 처리할 수 있는 신기한 파일입니다. 하지만 컴퓨터에 파이썬 interpreter가 설치되어 있어야 하고 코드에서 사용한 다양한 라이브 kwonkyo.tistory.com 코딩하면 늘 혼자서만 사용하기 때문에 pyinstaller를 사용할 일이 거의 없었는데요. 최근에 쓸 일이 생겨 오랜만에 패키징을 시켜 봤더니 에러가 발생했습니다. 예전에 해봤을 때와 달라진 것이라고 한다면 파이썬 버전이 달라진 것 말고는 없는데 "LoadLibraryEx", '시스템에서 파일.. 2021. 7. 6.
Python Virtual Environment(Virtualenv) 사용하기 개요 Virtualenv(Virtual Environment)는 서로 다른 프로젝트들이 각각의 의존성을 보존할 수 있도록 프로젝트 개발환경을 분리시켜주는 도구입니다. 이런 도구가 필요한 이유는 다음과 같습니다. 진행 중인 프로젝트가 2가지가 있는데 두 프로젝트에서 동일한 라이브러리를 사용한다고 예를 들어보겠습니다. 그런데 A라는 프로젝트는 라이브러리 버전 1.1에 호환성이 있어서 1.1 버전을 사용하고 있었습니다. 하지만 B라는 프로젝트는 1.3 버전의 호환성이 필요합니다. 이런 경우, Python의 site-package폴더가 버전별로 관리가 안되기 때문에 A 프로젝트 작업을 하다가 B 프로젝트 작업을 하려면 원래 깔려있던 1.1 버전의 라이브러리를 1.3으로 업그레이드가 필요합니다. 그리고 반대로 다.. 2021. 6. 29.
파이썬에서 문자열을 여러줄로 표시하고 주석까지 달기 (Multiline string with comment) 파이썬 코드 중에 긴 문자열 변수를 정의해야 할 때가 있습니다. 저는 최근에 크롤링 공부를 하다 보니 GET 방식으로 서버에 요청할 URL을 조합해야 할 때 많이 필요했습니다. 예를 들어 아래와 같은 URL이 있습니다. https://search.shopping.naver.com/search/category?frm=NVSHOVS&origQuery&catId=50000151&pagingIndex=1&pagingSize=10&productSet=overseas&query&sort=rel×tamp=&viewType=list 변수로 정의하면 이런 모양이 되겠죠. url = "https://search.shopping.naver.com/search/category?frm=NVSHOVS&origQuery&.. 2021. 6. 20.
파이썬에서 날짜 관련 요긴한 정보 - datetime 날짜 정보를 처리해야 할 때 제가 주로 사용하는 "datetime" 라이브러리의 아~주 기본 사용법들입니다. 이번 포스팅에 사용된 모든 코드는 datetime 라이브러리를 import 해야 정상적으로 사용할 수 있습니다. import datetime 오늘 날짜, 현재 시간 컴퓨터 시계를 통해서 오늘의 날짜 및 시간 정보를 가져오는 함수입니다. import datetime ToDay = datetime.datetime.now() datetime라이브러리 내에 now()라는 함수를 이용하면 지금 함수가 호출된 순간의 날짜와 시간을 반환하며 반환하는 형식은 파이썬에서 날짜/시간을 다루는 데 사용하는 구조체의 형태입니다. 요일 구하기 위에서 "ToDay"라는 변수에는 오늘의 그리고 현재의 날짜와 시간 정보가 들.. 2021. 6. 12.
파이썬으로 라인 메신저에 알림(메시지) 보내기 - Python to LINE Notify 파이썬으로 모니터링을 돌리고 있을 때 그 결과를 스마트폰으로 간편하게 받을 때 유용한 방법입니다. 라인 메신저에서 제공하는 "LINE Notify"를 이용하면 간단히 해결할 수 있습니다. LINE 설치, 가입 먼저 LINE Notify를 이용하기 위해서 라인 서비스를 사용하고 있어야 하는데요. 저도 기본 메신저는 카카오톡을 사용하기 때문에 추가로 설치를 했는데, 고맙게도 라인에서는 저처럼 부계정으로 사용하기에 적합한 라이트 버전을 제공하고 있습니다. 라인 라이트 버전을 설치하고 나서 간단히 가입절차 진행합니다. 라인 앱에서 설정 >> 계정 메뉴로 이동해서 메일, 비밀번호를 입력하고 중간에 있는 로그인 허용 옵션을 활성화해 줍니다. 이렇게 하면 앱에서 할 일은 끝났습니다. LINE Notify 토큰 발급 .. 2021. 6. 5.
로그인 후 리디렉팅하는 사이트 크롤링 파이썬에서는 크롤링을 아주 쉽게 할 수 있습니다. 파이썬을 모른다고 하더라도 예제 코드만 있으면 손쉽게 원하는 크롤링을 해볼 수 있을 정도로 간단한데, 오늘은 간단하게 시작했다가 몇 번의 시행착오를 격고서야 성공할 수 있었던 크롤링 작업에 대한 로그입니다. 로그인을 해서 권한을 얻은 후에 접근할 수 있는 페이지를 크롤링해야 할 일이 생겼고, 관련 예제는 인터넷에서 쉽게 찾을 수 있었습니다. import requests from bs4 import BeautifulSoup login_url = '로그인페이지주소/login.aspx' crawl_url = '크롤링할주소\Status.aspx' login_info = { 'UserID': '아이디', 'UserPW': '비밀번호' } with requests... 2021. 5. 17.
inline 함수 인라인 함수는 함수를 호출하는데 소요되는 자원을 최소화하기 위해서 호출될 함수 블록 전체를 프로그램과 한 몸처럼 컴파일해서 실행되도록 하는 함수를 말합니다. 일반적인 함수는 특정 위치에 컴파일된 함수가 위치하고 호출이 될 때마다 함수가 있는 곳으로 와서 함수를 수행하고 다시 원래 프로그램으로 돌아가는 식으로 동작하지만 인라인 함수는 호출되는 위치들마다 함수 블록들이 위치하고 있어서 그 자리에서 바로 실행되는 것처럼 수행된다고 하네요. 오픈소스 프로젝트로 공부하다 보면 아래 사진처럼 inline이라는 키워드로 시작하는 함수를 종종 볼 수 있습니다. 바로 이런 형태가 인라인 함수가 사용된 부분인데요. 함수 선언할 때 맨 앞에 "inline"이라는 키워드만 추가해서 사용할 수 있습니다. 인라인 함수는 언제 사.. 2021. 4. 16.
VSCode Python Extension에서 멀티 스레드 디버깅 파이썬 코딩에 Visual Studio Code(VSCode)를 많이들 사용하시는지 잘 모르겠는데, 저는 VSCode가 무겁지 않고 아두이노 스케치뿐만 아니라 공부하고 있는 다양한 언어를 사용할 수 있어서 All in one IDE 개념으로 VSCode를 잘 사용하고 있습니다. 그리고 VSCode에서 파이썬 코딩을 편리하게 하기 위해서는 Extension설치가 필요한데, 뭐가 좋은 Extenstion인지 잘 모르기 때문에 가장 많은 사람들이 쓰고 있는 "Python" 사용하고 있습니다. 이름도 깔끔하고 제작자도 MS라 그냥 믿고 쓰고 있답니다. 그런데 어느 순간 디버깅을 하는 와중에 이상하게 브레이크 포인트를 설정했는데도 불구하고 프로그램이 멈추지 않고 계속 돌아가는 상황을 겪게 되었습니다. 처음엔 디버.. 2021. 3. 23.
조달청 입찰/계약 정보 조회용 프로그램(2/2) - 코딩 공공데이터 포탈의 OpenAPI를 이용해서 조달청 공고 입찰 정보를 조회하는 프로그램 만들기 2부입니다. 지난 포스팅에서는 API에서 제공하는 정보의 구성과 내용에 대해서 확인해 봤었는데요. 조달청 입찰/계약 정보 조회용 프로그램 (1/ 2) - 공공데이터포탈 API 분석 및 GUI구성 조달청에서 제공하는 API를 이용해서 정부 발주 입찰공고 및 계약현황을 조회하는 파이썬 프로그램을 만들어 보려 합니다. 국가종합 전자조달 홈페이지인 나라장터에서 필요한 정보 조회가 모 kwonkyo.tistory.com 이번에는 분석 내용을 바탕으로 파이썬 코딩 진행해 보겠습니다. 여기서는 제가 공부하면서 어려웠던 부분들 그리고 알아두면 나중에도 유용하게 사용할 수 있는 부분들 위주로만 설명을 하겠습니다. 대신 계획한 기.. 2021. 3. 22.
조달청 입찰/계약 정보 조회용 프로그램 (1/ 2) - 공공데이터포탈 API 분석 및 GUI구성 조달청에서 제공하는 API를 이용해서 정부 발주 입찰공고 및 계약현황을 조회하는 파이썬 프로그램을 만들어 보려 합니다. 국가종합 전자조달 홈페이지인 나라장터에서 필요한 정보 조회가 모두 가능하지만 자주 찾아보는 검색조건 등을 저장해 두고 반복적으로 검색해 보거나 데이터를 수집할 용도로 사용할 수 있을 것 같아서 시도해 봤습니다. 파이썬을 이용해서 작성할 예정이고 GUI는 PyQt5. 그리고 수집된 정보는 DB(SQLite)를 활용해서 저장합니다. API 사용 신청 및 포멧 분석 먼저 API에서 어떤 정보가 가용한지 알아야 하니까 바로 API 신청부터 합니다. 공공데이터포털(www.data.go.kr)로 가서 회원 가입하고 로그인합니다. 조달청 입찰, 조달청 계약 키워드로 검색을 해서 다음과 같이 오픈 A.. 2021. 3. 19.