soma0sd

코딩 & 과학 & 교육

반응형

저의 경우 업무를 위해 개발을 시작할 때 대충 절차가 이렇습니다. 회사 VPN 연결 회사의 엣지컴퓨팅 개발보드에 SSH 접속 VSCode로 개발 시작 하는 절차를 거치고 있습니다. 장비마다 네트워크 이름을 별도로 설정해놓지 않아서 매번 포트스캐너를 사용하고, 22번 포트가 열려있는 장치 중에서 내부 호스트이름이 맞는 것을 찾는 것은 매우 귀찮은 일입니다. 언제나 그래왔던 것 처럼 귀찮은 반복작업은 개발자의 큰 적이죠. 파이썬을 사용해서 필요한 헤메는 절차를 자동으로 수행하는 스크립트를 구현합니다. 1 단계. 스캔범위 얻기 import socket MY_IP = socket.gethostbyname(socket.gethostname()) IP_RANGE = [".".join([*MY_IP.split("."..

[Python] 내부 IP 검색, 포트 확인, SSH 호스트네임 확인

NVIDIA 젯슨이나 라즈베리 파이 등 조금 특별한 환경에서 사용하는 파이썬 패키지는 파이썬 패키지 인덱스(PyPI)에서 제공하지 않는 경우가 많습니다. 즉 pip로 설치할 수 없거나 설치했더라도 오류가 발생합니다. 여기서는 무분투를 포함한 데비안 계열의 패키지 관리자인 APT를 사용해서 apt-get install python3-numpy와 같은 방식으로 설치한 패키지를 파이썬 가상환경에 적용하는 방법을 소개하고 간단한 bash 스크립트를 안내합니다. apt-get으로부터 가상환경의 패키지지로 옮기는 절차 apt-get downlad를 사용해서 해당하는 파이썬 패키지가 담긴 리눅스 패키지를 다운로드 dpkg -x를사용해서 패키지 압축 해제 mv를 사용해 데비안 패키지 내부의 dist-packages/ ..

Python 가상환경(venv)에 apt-get으로 설치한 패키지 집어넣기

파이썬 패키지를 만들다보면 직접 새로운 변수형이나 객체형을 만드는 경우가 있습니다. 사용자가 type()을 사용해서 타입체크를 하거나 소스코드의 매개변수의 형태, 출력 결과 형태를 Sphinx가 읽어서 해석하는 경우에의도했던 것과 달리 처럼 의도와는 다른 결과를 내놓습니다. 이를 해결하는 트릭을 소개합니다. my_package/ ├─ __init__.py └─ type/ ├─ __init__.py └─ _image.py my_package/type/__image.py class Image: def __init__(self, arg): pass my_package/type/__init__.py from ._image import Image __all__ = ["Image"] my_package/__init..

Python: 직접 만든 클래스의 이름공간 변경하기

스핑크스(Sphinx)를 통해 만든 패키지의 레퍼런스 페이지를 만듭니다. 제가 제작하는 패키지 설명서는 튜토리얼과 레퍼런스 페이지를 분리하여 작업합니다. 튜토리얼 페이지는 패키지를 처음 접하는 사람들을 위해 작성하고, 레퍼런스 페이지는 패키지의 구조를 따라 문서를 구성하여 어느정도 패키지에 익숙한 사람들이 보는 용도로 작성합니다. 레퍼런스 페이지를 작성하는데 큰 수고를 들이지 않으려면 소스코드에 문서화문자열(docstring)을 잘 남겨두는것이 중요합니다. 관련글 Python 패키지 개발일지 05: 주석을 이용한 문서화 Python 패키지 개발일지 06: 스핑크스를 사용한 패키지 문서화 Python 패키지 개발일지 07: 스핑크스 개인화 Python 패키지 개발일지 08: 스핑크스 & 깃허브 페이지 (중..

Python 패키지 개발일지 10: 스핑크스 레퍼런스 페이지 만들기

패키지를 제작하다 보면 미묘하게 신경쓰이는데 이미 만들어놓은 구조 때문에 고치기가 난감한 문제들이 있습니다. 이대로 업데이트가 쌓이다 보면 조금 신경쓰이는 문제가 계속 남아 점점 기술부채가 증가하게 됩니다. 여기서는 패키지를 갈아엎게 만들었던 문제와 그 해결법을 다룹니다. 버전 규칙 기존 다른 패키지를 작업할 때는 버전 개념을 잘 몰라 업데이트 할 때마다 계속 숫자를 올리기만 했는데요. 이 때문에 업데이트의 규모와 성격을 알 수 없어서 관리하기가 복잡했던 경험이 있습니다. 현재 만들고 있는 AutoWinPy는 파이썬의 버전규칙과 동일한 세 구역으로 구분한 버전 규칙을 따르고 있습니다. 이 방식은 v1.6.32와 같은 형태를 가집니다. 세 번째 자리(예시의 32): 버그 수정 업데이트를 의미합니다. 두 번..

Python 패키지 개발일지 09: 패키지를 갈아엎게 하는 문제들

앞에서는 최소한의 설정으로 그럭저럭 깃허브 패키지 저장소와 스핑크스(Sphinx)를 연동하고 깃허브 페이지에 등록했습니다. 이번에는 배치파일 변경, 스핑크스의 깃허브 페이지 확장, 테마를 다룹니다. 관련글 Python 패키지 개발일지 07: 스핑크스 개인화 make.bat 변경 기존 make.bat을 백업하고 새로운 파일을 만듭니다. 이 배치파일은 페이지를 만든 후 자동으로 ./docs/html/ 안에 들어있는 파일을 ./docs/로 옮겨줍니다. @Echo Off set SPHINXBUILD=sphinx-build set SOURCEDIR=sphinx_source set BUILDDIR=docs %SPHINXBUILD% -M html %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%..

Python 패키지 개발일지 08: 스핑크스 & 깃허브 페이지 (중급)

스핑크스(Sphinx)를 사용해 본격적으로 문서를 만들기 전에 만들어둔 깃허브(GitHub) 저장소와 스핑크스를 연동하는 작업을 하도록 하겠습니다. 이 작업은 반복 입력을 효과적으로 줄여줍니다. 관련 글 Python 패키지 개발일지 02: 깃허브에 패키지 올리기 Python 패키지 개발일지 03: PyPI에 패키지 올리기 Python 패키지 개발일지 06: 스핑크스를 사용한 패키지 문서화 readme.md 연결 index.rst와 readme.md를 연결하기 위해 m2r 패키지를 사용합니다. 명령창에 pip install m2r(아나콘다의 경우 conda install -c conda-forge m2r)를 입력하여 m2r을 설치한 후, conf.py를 열어 아래 내용으로 수정합니다. extensions ..

Python 패키지 개발일지 07: 스핑크스 개인화

스핑크스(Sphinx)는 파이썬 프로젝트를 문서화하는 도구입니다. 스핑크스는 RST(reStructuredText)와 파이썬의 문서화 문자열을 이용해 매뉴얼과 레퍼런스 문서를 작성하며 문서를 정적 웹페이지, 이북, PDF 등으로 출력합니다. 스핑크스 시작하기 > pip install Sphinx 아나콘다의 경우, > conda install -c anaconda sphinx 를 사용해 스핑크스를 설치합니다. 빠른 시작 프로젝트 디렉토리에서 다음 명령을 입력합니다. sphinx-quickstart 이제 스핑크스는 초기화를 위해 몇 가지를 물어봅니다. You have two options for placing the build directory for Sphinx output. Either, you use ..

Python 패키지 개발일지 06: 스핑크스를 사용한 패키지 문서화

특정한 위치에 있는 블록 주석은 요소의 __doc__속성이 되어 IntelliSense나 Sphinx등이 자동으로 설명을 붙일 수 있도록 해줍니다. 개발자가 아닌 사용자를 위한 이 주석은 별도로 docstring이라고 부르기도 합니다. 여기서는 Sphinx가 참조하는 구글 스타일의 주석과, Numpy스타일의 주석을 살펴봅니다. Docstring def function(a): """이것은 함수입니다. Args: a: 매개변수로 뭔가를 받습니다. Returns: 뭔가를 반환합니다. """ return a if __name__ == "__main__": print(function.__doc__) 지능형 코드 완성(IntelliSense) 기능을 제공하는 편집기는 이 __doc__를 자동으로 읽어 사용자에게 팝..

Python 패키지 개발일지 05: 주석을 이용한 문서화

End of content

No more pages to load

◀ PREVNEXT ▶