본문 바로가기
반응형

대동단결 Python28

모듈 일괄 설치 다음은 PIP와 함께 사용하는 명령어 이다. Commands: install Install packages. download Download packages. uninstall Uninstall packages. freeze Output installed packages in requirements format. inspect Inspect the python environment. list List installed packages. show Show information about installed packages. check Verify installed packages have compatible dependencies. config Manage local and global configurati.. 2023. 12. 19.
라즈베리파이 파이썬 업그레이드 라즈베리파이에는 파이썬이 설치되어 있다. pi@raspberrypi:~ $ python -V Python 2.7.16 pi@raspberrypi:~ $ python3 -V Python 3.7.3 파이썬의 새 버전은 소스파일 형태로 받아 직접 설치해야 한다. 파이썬 홈페이지에서 원하는 파일을 다운로드 한 뒤 압축을 풀고 생성된 디랙토리로 간다. 이 작업은 라이베리파이 데스크 탑에서 무난하게 처리할 수 있다. 1. 컴파일 전 설정파일돌리기 ./configure --enable-optimizations 이 과정은 로컬 계정으로 실행해도 된다. 2. 컴파일하기 sudo make altinstall 3. 설치가 완료되면 /usr/local/bin 에서 확인할 수 있다. 2023. 7. 27.
파이썬의 데코레이션 이란? 파이썬에서, 데코레이션은 함수, 클래스 또는 메소드에 추가적인 기능을 제공하기 위해 사용되는 것입니다. 데코레이터는 기존의 코드를 변경하지 않으면서, 기능을 추가하거나 향상시키는 것을 가능하게 합니다. 데코레이션은 중첩될 수 있어, 하나의 함수에 여러 개의 데코레이터를 적용할 수 있습니다. 데코레이션은 @decorator 구문을 사용하여 적용됩니다. 예를 들어, 다음은 함수에 데코레이터를 적용하는 예제입니다: def my_decorator(func): def wrapper(): print("Something is happening before the function is called.") func() print("Something is happening after the function is called.. 2023. 2. 4.
pygame에서 한글입력 컴포넌트 만들기 pygame 실행환경에서는 한글을 자유롭게 출력할 수 있다. 그러나 한글을 입력하기는 어렵다. 물론 소스코드 내부에서 한글을 자유롭게 사용할 수 있지만, pygame실행중 직접 한글입력 구현은 어렵다. 그 이유는 다음과 같이 생각해 볼 수 있다. python(적어도 pygame에서) 에서 한/영키를 인지 할 수 없다. python에서 한글 텍스트의 입력은 외부 시스템(예를들어 윈도우즈 같은 OS system)에 의존한다. 즉, python에서 한글을 입력할 때는 OS에서 제공하는 오토마타 부터 유니코드를 받아올 뿐이고 그것을 제어하는 어떤 함수가 없다. 그렇다고 해서 일반적인 파이썬 애플리케이션에서 한글을 입력하는것이 문제되지는 않다. 다만 pygame 내부에서 한글을 입력받기 위해서는 여러 키로부터 한.. 2022. 9. 8.
Thread간 정보 공유를 위한 Queue Queue는 복수의 정보를 저장할 수 있는 저장공간이다. 리스트와 유사한 개념이므로 리스트로 Queue를 구현해 사용할 수도 있다. queue는 단일 쓰레드에서 사용할 수도 있는데, 그보다는 멀티쓰레드 그 진가를 발휘한다. 패키지 queue에서 제공하는 Queue 클래스는 thread간 정보를 공유할 수 있도록 쓰레드락을 사용한다. 우리는 이것을 이용하여 멀리쓰레드 환경에서 큐를 안전하게 사용할 수 있다. 다음과 같은 작업을 가정하자. 메인쓰레드에서는 작업할 데이터를 추가하기만 한다. worker라는 서브쓰레드를 두어 메인쓰레드에서 추가한 데이터를 처리하는 일을 도맏는다. 두 작업은 디커플되어 있고, 서로에게 작업지연현상을 야기시켜서는 안된다. 다음은, 리스트로 구현된 큐를 사용한 코드이다. import.. 2022. 5. 20.
함수의 가변인자 와 *(별표)연산자 def test(*args, **kwargs): print(args) print(kwargs) test(1,2,3, temp=23, ttemp=45) (1, 2, 3) {'temp': 23, 'ttemp': 45} 어떤 함수의 인자(parameters)를 특정지을 수 없을 때 *를 포함한 변수명으로 받을 수 있다. 위 예에서 함수 test 는 *args, **kwargs의 변수명으로 인자를 받는다. args는 arguments의 약자로, kwargs는 keyward arguments의 약자로 사용되었으나, 이름은 파이썬 문법이 허용하는 어떤 이름이든 상관없다. 중요한 것은 별표하나 와 별표두개이다. 별표하나의 변수명 즉 *args로 전달되는 인자는 모든 위치형 인자(posit.. 2022. 5. 14.
pyinstaller 사이즈 최적화 pyinstaller size 문제 pyinstaller는 python 모듈로써 python으로 작성된 스트립트 파일을 직접 실행이 가능한 exe 파일로 변환한다. 이것은 C언어 처럼 소스파일을 컴파일하는 개념이 아니라, python 환경과 사용자가 작성한 스크립트 파일을 묶어 독립적인 실행파일로 변환한 것이다. 겉보기에는 하나의 실행파일 처럼 보이나, 그 파일에는 python 실행환경이 내장되어 있다. 파이썬을 사용하다 보면 다양한 모듈들을 설치하게 되고, 특히 아나콘다처럼 대형 배포판으로 파이썬이 설치되었을 경우 파이썬 실행환경이 매우 많은 파일로 구성되어 비대해진다. 이럴때 pyinstaller로 만들어진 사용자 실행파일은 그 용량이 쓸데없이 커지고 실행시키면 로딩시간이 길어 불편하다. 이 때 실행.. 2022. 4. 16.
pyautogui정리 마우스와 키보드 사용 import pyautogui import pyperclip # 모니터 화면의 사이즈 print(pyautogui.size()) # 현재 마우스 포지션 print(pyautogui.position()) # 마우스 포이터 이동 pyautogui.moveTo(100, 200) # x 100, y 200 위치로 바로 이동 pyautogui.moveTo(100, 200, 2) # x 100, y 200 위치로 2초동안 이동 # 마우스 클릭 pyautogui.click() # 좌클릭 pyautogui.click(button='right') #우클릭 pyautogui.doubleClick() # 더블클릭 pyautogui.click(clicks=3, interval=1) # 3번.. 2022. 4. 14.
메뉴엑션에 한글이름메쏘드 연결하기 : lambda 파이썬에서 한글이름의 변수명 또는 클래스명등 거의 모든 이름에 한글을 사용해도 무방 한 듯 하다. 그런데 메뉴액션에 연결할 메쏘드명에서 한글을 사용하면 프로그램이 제대로 실행되지 않은 채 별 에러메세지 송출없이 끝난다. 예를들어 아래의 코드를 실행하면 import sys from PyQt5.QtWidgets import * class Mywin(QMainWindow): def __init__(self): super(Mywin, self).__init__() menubar = QMenuBar(self) menu = menubar.addMenu('메뉴') action = QAction('그 함수 실행', self) action.triggered.connect(self.한글메소드명) menu.addAction.. 2021. 11. 16.
QThread 분산처리 : 작업처리후 자동소멸 PyQt5 GUI환경에서 작업이 비동기적으로 실행되어야 하거나, 분산처리 되어야 할 경우 Threading.Thread() 보다는 PyQt5.QtCore.QThread()를 이용하는 것이 바른 선택인것 같다. 왜냐하면 PyQt5 GUI 환경하에서 Threading.Thread 오브젝트가 작업량이 많아 시간이 수초 이상 소요되는경우에는 GUI 환경이 종종 '응답없음' 상태로 빠지기 때문이다. 이번 코드는 QThread로 정의된 쓰레드 워커(worker)들을 실행하면 스스로 실행을 마친 후 소멸하도록 한다. 필요한 모듈들 import sys from PyQt5.QtCore import QThread, QMutex from PyQt5.QtWidgets import QApplication QThread 만들기 .. 2021. 11. 5.
사용자 정의 시그널 만들기 시그널이란 객체는 시그널을 발생 시키는 위치에서 슬롯함수를 호출하도록 설계되어 있다. 즉, 해당 위치에서 함수를 호출한 것과 동일하게 동작된다. 먼저 시그널을 사용하기 위해 패키지가 필요하다. from PyQt5.QtCore import * 시그널을 만든다. 중요한 것은 시그널은 클래스변수이어야 하고, 시그널을 포함하는 클래스는 QObject 또는 그 후손이어야 한다. class 클래스명(QObject): 시그널명 = pyqtSignal(변수타입) 이 시그널이 동작되기 위해서는 반드시 클래스가 객체화 되어야 한다. 시그널은 (살아있는) 객체에서만 의미가 있기 때문이다. 변수타입으로는 다음과 같은 것들이 있다. bool(boolean) : 참, 거짓 두가지 값을 표현 int(integer) : 정수 flo.. 2021. 9. 11.
사용자 정의 시그널-슬롯 pyQt5기반의 파이썬 GUI 프로그래밍에는 시그널과 슬롯 이라는 개념이 있다. 예컨데 버튼을 클릭하는 순간 버튼이 클릭되었다는 시그널(이벤트 시그널)이 발생되고, 그 때 실행할 함수를 슬롯(콜백함수) 이라 한다. pyQt5에서 제공하는 모든 GUI 객체들은 제 나름대로의 필요한 시그널 들이 정의 되어 있다. 여기서는 사용자 정의 시그널을 만들고 사용해 본다. 참조문서 Support for Signals and Slots - PyQt 5.7 Reference Guide Qt의 주요 기능 중 하나는 시그널과 슬롯을 사용하여 객체간에 통신하는 것. 시그널이 발생하면 그 때 실행해야할 함수가 실행된다. 그 함수를 슬롯이라 한다. 이것이 가능하도록 시그널과 슬롯을 연결하여야 한다. signal/slot 메커니즘.. 2021. 5. 14.
키움서버의 요청간격을 자동체크 키움 OPEN API에서는 클라이언트의 너무 빈번한 요청을 방지하기 위하여 요청간격 0.2초가 설정되어 있다. 어떤 클라이언트에서 요청 후 동일 클라이언트에서 요청하기 위해서는 0.2초 후에 가능하다. 요청간격 이전의 요청은 무시된다. 서버에 뭔가를 요청하는 작업을 요청작업 이라 하자. 전체 프로그램이 돌아가는 사이 다양한 형태의 다수의 요청작업이 시간에 관계없이 나타난다. 한꺼번에 많은 요청작업이 생겨도 이를 0.2초의 요청간격을 두고 순차적으로 진행해야 한다. 요청작업이 100개이면 모든 요청작업이 완료되기 까지 20초의 의 대기시간이 필요하다. 그 시간 동안 프로그램이 다른 작업을 할 수 없게된다. 프로그램은 요청작업들이 각각 요청간격을 두고 순차적으로 진행하도록 설정해두고 다른 일을 할 수 있도록.. 2021. 5. 12.
글씨로 만들어진 이미지 만들기 티스토리에서 글을 올릴 때 이미지를 추가하고 이 중 한 이미지를 선택하여 대표이미지로 선정하고 대표이미지가 썸네일 및 타이틀 이미지로 활용된다. 파이썬으로 자동생성되는 글이 내부에 포함되는 이미지와 별개로 대표이미지가 글마다 다른 글자로 만들어진 이미지로 하고 싶을 때가 있다. 예를들어 이 블로그에 매일 매일 올라오는 글 중 돈키움픽이 있는데, 이 글의 대표이미지에 해당 날자가 글씨로 인쇄되었으면 좋겠다. 이를 위해 아래의 파이썬 코드가 이용되었다. 1 2 3 4 5 6 7 8 9 10 11 12 # coding = utf-8 from PIL import Image, ImageDraw, ImageFont img = Image.new("RGB",(460,600), (10,90,150)) d = ImageD.. 2021. 1. 10.
티스토리 API에서 글 올릴 때 대표이미지 설정 API를 통해 티스토리에 글을 올릴경우 글내용은 서식 없는 택스트 또는 HTML 서식을 사용할 수 있다. 당연히 글의 다양한 속성을 지정할 수 있는 HTML서식으로 글을 올리는 것이 일반적으로 바람직 하다. HTML서식으로 글을 올리기 위해서는 단순히 글내용을 body태그 내 사용할 수 있는 html 문법으로 작성하면 된다. (마크다운 문법으로 글을 올릴 수 없는 점은 무척 아쉽다.) 그런데 글내용에 이미지를 포함하려면 어떻게 할까? 웹 위에 존재하는 이미지의 주소를 img태그에 속성으로 넣어 사용한다. img 태그내 이미지 데이터를 직접 넣어 작성한다. 로 정리할 수 있다. 그런데 위의 두 방법으로 대표이미지를 설정 할 수 없다. 대표이미지 설정은 반드시 이미지 업로드라는 선행작업이 있어야 가능하다. .. 2021. 1. 10.
반응형