soma0sd

코딩 & 과학 & 교육

Python 패키지 개발일지 02: 깃허브에 패키지 올리기

반응형

일단 패키지를 온라인 저장소에 업로드한 뒤 파이썬 패키지 인덱스에 프로젝트를 등록하는 것 까지 해보도록 하겠습니다. 여기서는 각 과정과 그 과정에 필요한 서비스, 패키지, 응용프로그램들을 설명합니다.

깃허브 저장소 생성

깃허브(GitHub)에 계정을 등록한 후 저장소(Repository)를 생성합니다. 생성하는 저장소의 이름은 패키지 인덱스에 등록하는 이름과 직접적인 관련은 없으므로 여러개의 저장소를 관리한다거나 하는 경우에는 꼭 패키지 이름으로 하지 않아도 괜찮습니다.

Initialize this repository with a README를 선택하면 아니라 복제와 편집이 가능한 저장소로 초기화합니다. 선택하지 않는 경우에 깃허브는 이 저장소를 위한 기존 저장소가 이미 있으며, 해당 저장소를 위해 자리만 맡아두는 정도의 초기화를 진행합니다. 언어와 라이센스를 선택하면 .gitignore파일과 LICENSE파일이 들어있는 상태로 저장소가 초기화됩니다.

제 경우 저장소의 이름을 autowinpy로 하였습니다.

autowinpy/
  ├─ .gitignore : 깃허브에 올리지 않을 파일들의 이름규칙
  ├─ LICENSE: 선택한 라이센스 파일
  └─ readme.md: 저장소를 소개하는데 쓰이는 텍스트 파일

초기화 한 뒤의 저장소 내부는 이렇게 생겼습니다.

라이센스 선택

라이센스는 공개한 소스코드의 이용규칙입니다. 소스코드가 맘에 들었을 때 이를 이용하기 위해 허락을 구하는 지난한 과정 없이 "이런이런 조건에서는 자유롭게 쓰세요"라고 정해두는 것인데요. 깃허브 저장소가 추천하는 라이센스는 아파치 2.0, GPL v3.0, MIT가 있습니다. 이들은 각각 다른 오픈소스 라이센스이며, 별도의 검색을 통해서 라이센스를 선택하시면 됩니다.

단, 패키지가 다른 작업물의 소스코드나 응용프로그램을 이용하는 경우에는 해당하는 소스코드의 라이센스를 참조하셔야 합니다. 가령 내가 가져오는 소스코드의 라이센스가 GPL이라면, 저장소의 라이센스를 MIT로 하는 것은 라이센스 위반 사항이 됩니다. 다만, 단지 만든 패키지가 다른 패키지를 불러와서 import로 사용할 뿐이라면 크게 염려하지 않으셔도 됩니다.

깃허브 데스크톱

이전까지는 소스트리를 사용했는데, 사용하는 에디터인 VSCode가 필요한 기능은 다 가지고 있어서 기본적인 깃허브 데스크톱을 사용하기로 했습니다.

설치 후 응용프로그램을 실행하여 로그인하면 만들어 둔 저장소를 내 컴퓨터로 복제할 수 있습니다. 방금 만든 저장소를 복제하면 아래와 같은 파일구조가 생성됩니다.

문서/
  └ GitHub/
    └ autowinpy/
      ├─ .gitignore
      ├─ LICENSE
      └─ readme.md

커밋, 푸시, 풀

VSCode는 깃허브 데스크톱의 설치를 자동으로 인식하여 문서/GitHub/autowinpy/를 열면 자동으로 소스제어를 활성화 합니다. 소스제어는 소스코드와 파일에 변경사항이 있는 경우에 자동으로 변경내용에 표시합니다.

당장 패키지를 만들기 위해 필요한 깃(Git)의 기본기능은 커밋(commit), 푸시(push), 풀(pull)입니다. 커밋은 변경의 가장 작은 단위를 나타내고 각 커밋에는 메시지를 첨부할 수 있습니다. 푸시는 현재 데스크톱을 기준으로 깃허브의 저장소를 동기화합니다. 풀은 깃허브의 저장소를 기준으로 데스크톱의 작업공간을 동기화합니다.

어떤 수정을 반영하고 싶다면 VSCode의 소스제어 탭에서 수정사항으로 묶을 파일의+버튼을 눌러 파일을 스테이징 합니다. 파일을 선택하면 수정내역을 보여주는데, 스테이징 한 파일을 선택해서 소스코드 내용에 마우스 오른쪽 버튼을 클릭하면 줄 단위로 스테이징을 하거나 취소할 수 있습니다. 메시지와 관련있는 수정내역만을 선택하여 커밋하는 것은 이후의 소스코드 관리에 큰 도움이 됩니다.

파일 제외

.gitignore는 작업공간에 있는 파일 중 깃허브 저장소에 올라가면 안될 개인정보나 임시로 생성되는 파일, 테스트를 위해서 만든 파일등을 이름규칙으로 제외합니다. 디렉토리를 지정하는 경우 /로 끝나는 이름규칙을 가지고 있고, *는 와일드카드를 의미합니다. 즉, *test.*라고 지정한 이름규칙은 test.py, unit-test.txt등을 제외합니다. # 으로 시작하는 줄은 주석이므로 파일 규칙에 영향을 주지 않습니다.

이것은 제가 사용하는 .gitignore파일입니다.

test.py
test/

# Document resource
_themes/
doctrees/

doc.bat
Makefile
make.bat

# build
build/
dist/
.vscode/
*.egg-info/

# backups
_backup/

이미 동기화한 파일을 제외하는 경우에는 .gitignore를 수정하고 제외할 파일을 이동한 후 파일 제어 탭에서 D플래그가 붙은 파일과 .gitignore를 함께 커밋한 뒤 제외할 파일을 원래 위치로 옮겨놓으면 정상적으로 제외됩니다.

반응형
태그:

댓글

End of content

No more pages to load