Programming
-
기록용으로 남깁니다. 파이썬이 실행되어 생성되는 *.pyc 파일에는 사용된 파이썬 버전 정보가 파일 맨 처음 4바이트에 저장되어 있습니다. 보통은 bad magic number 등의 문제가 생기면 *.pyc 파일을 지우고 재생성하면 되는데 그렇지 못한 상황을 위해 기록으로 남깁니다. 문제가 되는 pyc 파일의 첫 4바이트를 little endian 으로 직접 읽어서 확인하셔도 되고, 정상적으로 접근 가능한 환경이 있는 경우에는 코드로 확인하셔도 됩니다. # python 2.x 대 import imp imp.get_magic().encode('hex') 'd1f20d0a' # python 3.x 대 import importlib importlib.util.MAGIC_NUMBER.hex() '420d0d0a..
[python] magic number기록용으로 남깁니다. 파이썬이 실행되어 생성되는 *.pyc 파일에는 사용된 파이썬 버전 정보가 파일 맨 처음 4바이트에 저장되어 있습니다. 보통은 bad magic number 등의 문제가 생기면 *.pyc 파일을 지우고 재생성하면 되는데 그렇지 못한 상황을 위해 기록으로 남깁니다. 문제가 되는 pyc 파일의 첫 4바이트를 little endian 으로 직접 읽어서 확인하셔도 되고, 정상적으로 접근 가능한 환경이 있는 경우에는 코드로 확인하셔도 됩니다. # python 2.x 대 import imp imp.get_magic().encode('hex') 'd1f20d0a' # python 3.x 대 import importlib importlib.util.MAGIC_NUMBER.hex() '420d0d0a..
2021.10.05 -
기록용으로 남깁니다. virtualenv 를 사용하다 보니 왠만한 것은 source ~/wiznet/venvA/bin/activate 한 다음에 정상적으로 pip3 로 설치 가능하지만 apt 패키지로 제공되는 것들은 root 계정 권한으로 설치되기 때문에 이미 virtualenv 를 구성한 다음에는 이를 자동적으로 참조할 방법은 없습니다. 현재 확인한 방법으로는 이를 찾아서 수동으로 복사하는 것입니다. 일단 제가 설치한 apt 패키지는 rpi.gpio 패키지입니다. sudo apt install rpi.gpio 전역 저장소를 찾습니다. find /usr -name 'site-packages' /usr/lib/pypy/lib-python/2.7/site-packages /usr/local/lib/pytho..
[python][virtualenv] 이미 가상 환경이 구축된 이후 설치된 전역 패키지 가져오기..기록용으로 남깁니다. virtualenv 를 사용하다 보니 왠만한 것은 source ~/wiznet/venvA/bin/activate 한 다음에 정상적으로 pip3 로 설치 가능하지만 apt 패키지로 제공되는 것들은 root 계정 권한으로 설치되기 때문에 이미 virtualenv 를 구성한 다음에는 이를 자동적으로 참조할 방법은 없습니다. 현재 확인한 방법으로는 이를 찾아서 수동으로 복사하는 것입니다. 일단 제가 설치한 apt 패키지는 rpi.gpio 패키지입니다. sudo apt install rpi.gpio 전역 저장소를 찾습니다. find /usr -name 'site-packages' /usr/lib/pypy/lib-python/2.7/site-packages /usr/local/lib/pytho..
2021.09.13 -
기록용으로 남깁니다. 제목과 같은 오류 발생시 split() 등의 함수를 사용할 때 나타날텐데 넘어온 값이 str 이 아니라 bytes 로 되어 있어서 발생하는 오류입니다. 혹시 모르니 type 으로 자료형을 확인하거나 print 로 직접 출력해서 bytes 로 되어 있는 것을 확인해봅시다. bytes -> str 은 간단합니다. string_variable.decode() 하면 str로 변환됩니다. 이 결과물에 split()을 하던 다른 함수를 사용하면 되겠습니다.
[python3] a bytes like object is required not 'str' 오류기록용으로 남깁니다. 제목과 같은 오류 발생시 split() 등의 함수를 사용할 때 나타날텐데 넘어온 값이 str 이 아니라 bytes 로 되어 있어서 발생하는 오류입니다. 혹시 모르니 type 으로 자료형을 확인하거나 print 로 직접 출력해서 bytes 로 되어 있는 것을 확인해봅시다. bytes -> str 은 간단합니다. string_variable.decode() 하면 str로 변환됩니다. 이 결과물에 split()을 하던 다른 함수를 사용하면 되겠습니다.
2021.07.16 -
venv 나 virtualenv 를 쓸 때 내 환경이 내가 지정한 env 에 잘 연결되었나 확인하고 싶을 때가 있습니다. 참고 글에 따르면 sys.path 를 출력해보면 알 수 있다고 합니다. 다만 vscode 기준 해당 폴더의 터미널에서 python3 를 실행시켜서 출력해보면 여전히 전역 python 경로가 출력됩니다. python3.exe 자체가 PATH 가 전역으로 잡혀있는 바이너리로 실행이 되었기 때문인데요 해당 테스트 코드를 cmd 상에서 하지 않고 빈 .py 파일을 만들어서 해당 코드에서 확인하면 현재 venv 에 포함된 경로를 의존하고 있음을 확인할 수 있습니다. import sys for p in sys.path: print(p) # or just sys.path # print(sys.pa..
[python] 윈도우10에서 python.exe 실행 경로 확인하기venv 나 virtualenv 를 쓸 때 내 환경이 내가 지정한 env 에 잘 연결되었나 확인하고 싶을 때가 있습니다. 참고 글에 따르면 sys.path 를 출력해보면 알 수 있다고 합니다. 다만 vscode 기준 해당 폴더의 터미널에서 python3 를 실행시켜서 출력해보면 여전히 전역 python 경로가 출력됩니다. python3.exe 자체가 PATH 가 전역으로 잡혀있는 바이너리로 실행이 되었기 때문인데요 해당 테스트 코드를 cmd 상에서 하지 않고 빈 .py 파일을 만들어서 해당 코드에서 확인하면 현재 venv 에 포함된 경로를 의존하고 있음을 확인할 수 있습니다. import sys for p in sys.path: print(p) # or just sys.path # print(sys.pa..
2021.07.01 -
기록용으로 남깁니다. vscode 에서 Ctrl + , 키를 눌러 설정 창을 엽니다. Search settings 항목에 pylance를 입력합니다. 어느 영역에 적용할 지에 따라 User, Remote, Workspace 탭을 선택합니다. User는 전역, Remote는 원격 접속시, Workspace 는 현 작업공간에 적용됩니다. 저는 일단 Workspace 를 선택했습니다. 항목을 보면 Python > Analysis: Type Checking Mode 라고 되어 있는 부분이 있습니다. off/basic/strict 의 3가지 값을 고를 수 있는데 이 오류는 off 를 선택해야 나오지 않았습니다. 경고를 끄면 정작 도움이 필요할 때 얻지를 못하니 신중하게 생각하고 결정하시기 바랍니다.
[python3][vscode][pylance] operator "in" not supported for types literal and str int float 26,12 오류 끄기기록용으로 남깁니다. vscode 에서 Ctrl + , 키를 눌러 설정 창을 엽니다. Search settings 항목에 pylance를 입력합니다. 어느 영역에 적용할 지에 따라 User, Remote, Workspace 탭을 선택합니다. User는 전역, Remote는 원격 접속시, Workspace 는 현 작업공간에 적용됩니다. 저는 일단 Workspace 를 선택했습니다. 항목을 보면 Python > Analysis: Type Checking Mode 라고 되어 있는 부분이 있습니다. off/basic/strict 의 3가지 값을 고를 수 있는데 이 오류는 off 를 선택해야 나오지 않았습니다. 경고를 끄면 정작 도움이 필요할 때 얻지를 못하니 신중하게 생각하고 결정하시기 바랍니다.
2021.06.24 -
기록용으로 남깁니다. 원격지 주소를 바꿀 때 보통 Ctrl + , 키를 눌러서 rsync 를 검색하고 결과에서 remote 항목에 id@원격지주소:실제경로 형태로 작성하게 되는데요 이런 설정을 바꿔도 계속 예전 주소로 나올 때가 있습니다. 이런 경우에 rsync 키워드 검색창 아래에 보면 탭이 User, Remote, Workspace 의 3개 탭이 있습니다. 일단 이 3가지 탭을 다 눌러가면서 remote 설정 값을 확인해보시고 그래도 동작하지 않는다면 Options 항목(settings.json 편집 창에서만 편집됩니다)이나 Sites 항목을 각 탭 영역별로 확인해봐야 합니다. 제 경우는 Workspace 에 Sites 형태로 예전 ip 가 강제로 추가되어 있었습니다. 해당 설정을 삭제하고 나니 UI..
[vscode][sync-rsync] 원격지 주소를 아무리 변경해도 반영되지 않을 때기록용으로 남깁니다. 원격지 주소를 바꿀 때 보통 Ctrl + , 키를 눌러서 rsync 를 검색하고 결과에서 remote 항목에 id@원격지주소:실제경로 형태로 작성하게 되는데요 이런 설정을 바꿔도 계속 예전 주소로 나올 때가 있습니다. 이런 경우에 rsync 키워드 검색창 아래에 보면 탭이 User, Remote, Workspace 의 3개 탭이 있습니다. 일단 이 3가지 탭을 다 눌러가면서 remote 설정 값을 확인해보시고 그래도 동작하지 않는다면 Options 항목(settings.json 편집 창에서만 편집됩니다)이나 Sites 항목을 각 탭 영역별로 확인해봐야 합니다. 제 경우는 Workspace 에 Sites 형태로 예전 ip 가 강제로 추가되어 있었습니다. 해당 설정을 삭제하고 나니 UI..
2021.06.21 -
기록용으로 남깁니다. 이 글을 참고했습니다. with tarfile.open("zipped.tar.gz", "w:gz") as tar: tar.add(f"/tmp/01.log") sourcefile은 압축할 파일이고 zipped.tar.gz 는 생성될 압축 파일입니다. tar cvzf zipped.tar.gz /tmp/*.log 와 유사한 결과가 생성된다고 보시면 됩니다. 간단하죠? ㅎㅎ
python 에서 tar.gz 파일 만들기기록용으로 남깁니다. 이 글을 참고했습니다. with tarfile.open("zipped.tar.gz", "w:gz") as tar: tar.add(f"/tmp/01.log") sourcefile은 압축할 파일이고 zipped.tar.gz 는 생성될 압축 파일입니다. tar cvzf zipped.tar.gz /tmp/*.log 와 유사한 결과가 생성된다고 보시면 됩니다. 간단하죠? ㅎㅎ
2021.06.15 -
기록용으로 남깁니다. 파이썬에서 현재 사용되는 인스턴스의 클래스명이 필요할 때가 있습니다. instanceA = ClassA() 라고 생성한 경우, type(instanceA).__name__ 값을 접근하면 ClassA 가 문자열로 나옵니다. python2 에서는 instanceA.__class__.__name__ 으로 접근할 수 있다고 하는데 2를 쓰지 않아서 확인이 안되네요.
[python3] 인스턴스의 클래스 이름 출력하기기록용으로 남깁니다. 파이썬에서 현재 사용되는 인스턴스의 클래스명이 필요할 때가 있습니다. instanceA = ClassA() 라고 생성한 경우, type(instanceA).__name__ 값을 접근하면 ClassA 가 문자열로 나옵니다. python2 에서는 instanceA.__class__.__name__ 으로 접근할 수 있다고 하는데 2를 쓰지 않아서 확인이 안되네요.
2021.05.03