본문 바로가기

파이썬35

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.
파이썬으로 라인 메신저에 알림(메시지) 보내기 - 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.
VSCode Python Extension에서 멀티 스레드 디버깅 파이썬 코딩에 Visual Studio Code(VSCode)를 많이들 사용하시는지 잘 모르겠는데, 저는 VSCode가 무겁지 않고 아두이노 스케치뿐만 아니라 공부하고 있는 다양한 언어를 사용할 수 있어서 All in one IDE 개념으로 VSCode를 잘 사용하고 있습니다. 그리고 VSCode에서 파이썬 코딩을 편리하게 하기 위해서는 Extension설치가 필요한데, 뭐가 좋은 Extenstion인지 잘 모르기 때문에 가장 많은 사람들이 쓰고 있는 "Python" 사용하고 있습니다. 이름도 깔끔하고 제작자도 MS라 그냥 믿고 쓰고 있답니다. 그런데 어느 순간 디버깅을 하는 와중에 이상하게 브레이크 포인트를 설정했는데도 불구하고 프로그램이 멈추지 않고 계속 돌아가는 상황을 겪게 되었습니다. 처음엔 디버.. 2021. 3. 23.
조달청 입찰/계약 정보 조회용 프로그램(2/2) - 코딩 2023-04-05 update log: 공공데이터 포털 API주소 변경 및 Qt함수 변경으로 인한 에러 수정 공공데이터 포탈의 OpenAPI를 이용해서 조달청 공고 입찰 정보를 조회하는 프로그램 만들기 2부입니다. 지난 포스팅에서는 API에서 제공하는 정보의 구성과 내용에 대해서 확인해 봤었는데요. 조달청 입찰/계약 정보 조회용 프로그램 (1/ 2) - 공공데이터포탈 API 분석 및 GUI구성 조달청에서 제공하는 API를 이용해서 정부 발주 입찰공고 및 계약현황을 조회하는 파이썬 프로그램을 만들어 보려 합니다. 국가종합 전자조달 홈페이지인 나라장터에서 필요한 정보 조회가 모 kwonkyo.tistory.com 이번에는 분석 내용을 바탕으로 파이썬 코딩 진행해 보겠습니다. 여기서는 제가 공부하면서 어려웠.. 2021. 3. 22.
조달청 입찰/계약 정보 조회용 프로그램 (1/ 2) - 공공데이터포탈 API 분석 및 GUI구성 2023-04-05 update log: 공공데이터 API 업데이트 사항 반영 조달청에서 제공하는 API를 이용해서 정부 발주 입찰공고 및 계약현황을 조회하는 파이썬 프로그램을 만들어 보려 합니다. 국가종합 전자조달 홈페이지인 나라장터에서 필요한 정보 조회가 모두 가능하지만 자주 찾아보는 검색조건 등을 저장해 두고 반복적으로 검색해 보거나 데이터를 수집할 용도로 사용할 수 있을 것 같아서 시도해 봤습니다. 파이썬을 이용해서 작성할 예정이고 GUI는 PyQt5. 그리고 수집된 정보는 DB(SQLite)를 활용해서 저장합니다. API 사용 신청 및 포멧 분석 먼저 API에서 어떤 정보가 가용한지 알아야 하니까 바로 API 신청부터 합니다. 공공데이터포털(www.data.go.kr)로 가서 회원 가입하고 로그.. 2021. 3. 19.
PyQt5 오버레이 레이어 Ver.2 어제 업로드했던 오버레이 레이어의 업그레이드 버전입니다. PyQt5 오버레이 레이어 PyQt에서 특정 위젯을 오버레이 하는 레이어를 만드는 방법입니다. 아래 그림과 같은 윈도우에서 하단 PushButton을 누를 때마다 TextEdit창을 덮는 붉은색 레이어가 나타났다가 사라집니다. 먼저 Qt De kwonkyo.tistory.com 오버레이 레이어 구현 방법을 찾아보게 된 계기는 시간이 오래 걸리는 동작을 하고 있을 때 동작중임을 시각적으로 표현하고 사용자의 추가 입력을 제한해야 하는 상황에 사용하기 위해서였습니다. 그래서 좀 더 로딩 화면처럼 보이도록 수정한 버전입니다. 일정 시간 동안 로딩 동그라미가 돌아가고 동시에 잔여 카운터가 얼마인지 숫자로 표시되도록 만들어 봤습니다. 아래는 소스코드입니다. .. 2020. 12. 3.
PyQt5 오버레이 레이어 PyQt에서 특정 위젯을 오버레이 하는 레이어를 만드는 방법입니다. 아래 그림과 같은 윈도우에서 하단 PushButton을 누를 때마다 TextEdit창을 덮는 붉은색 레이어가 나타났다가 사라집니다. 먼저 Qt Designer로 GUI 폼을 만들어 줍니다. 여기서는 템플릿으로 위젯을 사용했습니다. 새 폼 만들기메뉴에서 "Widget"을 선택하고 생성을 눌러줍니다. "verticalLayout"안에 "pushButton"과 "textEdit"를 배치합니다. 그리고 폼 빈 공간에 마우스 우클릭하여 "배치 > 격자형으로 배치"를 선택합니다. 아래와 같은 폼 디자인이 완성되었습니다. 파일이름을 "overlay.ui"로 저장합니다. 이제 파이썬 코드를 작성해 줍니다. from PyQt5.QtCore import .. 2020. 12. 2.
pyinstaller - 파이썬 코드를 실행파일(.exe)로 변환 ".py" 확장자의 파이썬 코드는 매우 작은 용량이지만 방대한 일을 처리할 수 있는 신기한 파일입니다. 하지만 컴퓨터에 파이썬 interpreter가 설치되어 있어야 하고 코드에서 사용한 다양한 라이브러리들이 모두 설치가 되어 있어야만 실행이 가능합니다. 그래서 내가 짠 코드를 다른사람에게 배포하기가 까다롭습니다. 이럴때 ".exe"의 실행파일로 묶어서 배포할 수 있게끔 하는 "pyinstaller"를 이용하는 방법입니다. (윈도우 환경에서 IDE로 Visual Studio를 사용하는 기준입니다. 참고해주세요.) pyinstaller 설치 먼저 파이썬에서 pip명령어로 pyinstaller를 설치합니다. >>> pip install pyinstaller Visual Studio환경에서 pyinstalle.. 2020. 7. 9.
[파이썬의 기본] 클래스 메소드(Class Method) & 스태틱 메소드(Static Method) 앞서 클래스를 정의하고 사용하는 기본적인 방법에 대해서 알아봤었는데요. ([파이썬의 기본] 클래스(Class)) 이런 기본적인 메소드의 사용방법을 인스턴스 메소드(Instance Method)라고 합니다. 메소드가 클래스의 인스턴스로 호출이 되고 첫번째 파라미터인 "self"로 인스턴스 자기자신이 자동으로 전달되는 방식입니다. 이 번에는 그외 사용방법인 클래스 메소드(Class Method), 스태틱 메소드(Static Method)에 대해서 정리하겠습니다. Class Methods 클래스 메소드는 클래스에서 호출이되고 인스턴스 메소드가 첫번째 파라미터로 자신의 인스턴스를 "self"로 전달하는 것과는 달리 "cls"라는 파라미터로 자신의 클래스를 전달합니다. 용도는 클래스 생성자에 다른 형태의 파라미터.. 2019. 7. 8.