01. 개발환경

cuckoo·2022년 12월 15일
0

data engineering

목록 보기
1/2

키워드

  • 터미널
  • CLI
  • 파이썬 가상환경
  • 깃(Git)
  • 깃헙(Github)

1.터미널

글자 기반으로 명령을 전달할 수 있는 어플리케이션을 의미

1-1.기본 명령어

  • $ pwd : 현재 경로를 나타내는 명령어
  • $ mkdir {폴더명}: 폴더(디렉토리)를 생성
  • $ cd {폴더명} : 폴더에 들어가는 명령어
    • cd ..
    • cd ./Desktop
  • $ ls : 현재 디렉토리 안의 파일 및 폴더 목록을 출력
    • $ ls -l : 상세정보 출력
    • $ ls -a : 숨긴 파일까지 표시
    • $ ls -al : 숨긴 파일까지 상세정보 포함해서 출력
  • $ cat {파일명} : 파일을 터미널에 출력
  • cp (파일) (새로운 파일) : 윈본 파일 복사
  • touch :

이외에도 터미널에서 사용하는 명령어들은 많습니다.
키워드로 검색해 보면서 자신이 사용할 명령어들을 정리해 보시기 바랍니다.
추천 키워드: bash 쉘 기본 명령어,리눅스 기본 명령어

1-2.CLI

글자 기반으로 여러분의 명령과 결과가 진행되는 것

CLI vs GUI

  • CLI 글자로 명령시키는 작업공간(키보드) / 직접제어(컴퓨터와 직접 소통하는 창) → git bash

  • GUI 그래픽으로 명령시키는 작업공간(마우스) / 누구나 접근 가능하며 직관적 → 일반적인 사이트

  • CLI vs GUI

    CLI(Command Line Interface)와 GUI(Graphical User Interface)는 두 가지 다른 유형의 사용자 인터페이스입니다. CLI는 텍스트 명령어를 사용하여 컴퓨터를 제어하는 방식이고, GUI는 컴퓨터에서 사용하는 소프트웨어를 제어하기 위해 사용자가 컴퓨터 화면을 클릭하고 드래그하는 방식을 사용합니다.

    CLI는 일반적으로 컴퓨터의 운영 체제에서 사용할 수 있는 간단한 명령어를 사용하여 컴퓨터의 기능을 제어할 수 있는 인터페이스입니다. 예를 들어, 사용자가 컴퓨터의 디렉토리를 이동하거나 파일을 삭제하기 위해서는 특정 명령어를 입력해야 합니다. CLI는 일반적으로 컴퓨터의 운영 체제의 터미널 또는 콘솔을 통해 제어할 수 있습니다.

    GUI는 컴퓨터 화면에 그래픽을 사용하여 컴퓨터의 기능을 제어하는 인터페이스입니다.

2.파이썬 가상환경

  • 의의 개발하는 환경을 독립시켜, 배포 환경에서도 해당 환경이 똑같이 재현하도록 함
  • 목적 의존성 충돌package conflict 방지 : 각 가상환경을 독립시켜 다른 라이브러리(+다른버전) 설치하여 충돌 방지
  • 하나의 환경에는 한 패키지당 하나의 버전만이 설치될 수 있음
get-command python
python -- version : 파이썬 버전 확인
pip list : 파이썬의 패키지의 목록이 출력

3.아나콘다 가상환경

  • conda를 제공해주는 UI
  • 아나콘다 설치 시 conda, pandas, scipy, scikit learn 등 함께 설치
  • 가상환경 중첩 설치 주의(base도 안됨) / 항상 deactivate 하기 때문
  • cmd, Git Bash, PowerShell의 주요 차이점은 각각의 설계 목적입니다.
    • cmd: cmd(명령 프롬프트)는 사용자가 명령을 입력하고 실행할 수 있는 명령행 인터페이스입니다. Windows 운영 체제에 포함되어 있으며, 프로그램 실행, 파일 관리, 시스템 설정 등 다양한 작업을 수행할 수 있습니다.
    • Git Bash: Git Bash는 Unix 스타일의 셸과 명령행 도구를 제공하는 명령행 인터페이스입니다. Git 버전 관리 시스템과 특히 사용하기 위해 설계되었으며, Git 저장소를 관리하고 Git 관련 작업을 수행할 수 있습니다.
    • PowerShell: PowerShell은 .NET 프레임워크에 기반한 명령행 인터페이스와 스크립팅 언어입니다. Windows 시스템과 응용 프로그램을 자동화하고 관리할 수 있는 강력하고 유연한 방법을 제공합니다. cmd와 Git Bash와는 달리 Windows 운영 체제에 포함되어 있지 않고 별도로 설치해야 합니다.
conda --version
conda env list : 가상환경목록 / 디폴트 base
conda create --name 'practice' python=3.8  : 가상환경 설치
conda deactivate : 가상환경끄기
conda activate practice : 가상환경켜기
conda env remove --name 'practice' : 가상환경 삭제

4.git & github

4-1.git

  • Git 은 버전 관리 시스템 (VCS, Version-Control System) 입니다.
  • 공식문서 '파일 변화를 시간에 따라 기록했다가 나중에 특정 시점의 버전을 다시 꺼내올 수 있는 시스템'
  • RCS
    • VCS도구 중 하나, patch set(파일변경부분) 관리
  • CVCS
    • 중앙집중식 버전관리시스템, 시스템서버 중앙 > 클라이언트 받아서 사용checkout / CVS, Subversion, Perforce 등
    • 장점
      • 로컬VCS에 비해 누가 무엇을 하는지 관리하기 쉬움
    • 단점
      • 서버 점검기간동안 사용 불가, 서버 다운 시 히스토리 날라감
  • DVCS
    • 분산 버전관리시스템, 통채로 클론해 로컬 작업 후 원격저장소에 올림 / Git, Mecurial, Bazaar, Darcs 등

4-2.github

  • 원격코드저장소(인터넷공간의 저장소)
  • 인터넷 상의 소프트웨어 개발과 버전관리
  • 추가기능) 로컬작업내용 삭제되어도 복구

4-3.git과 github의 프로세스

  • 로컬파일 생성
  • stage area 생성 → local레포로 옮기기 위해
  • staging → stage area에 local파일 업로드, 깃add기능 이용
  • commit → stage area에서 local레포로 복사
  • push → local레포에서 원격레포로 복사, 인터넷 필요한 순간
  • pull request → 내 레포에서 원래있던 레포와 파일 합침

4-5.깃헙 레포 사용하기

1.온라인에서 로컬로 레포지토리 가지고 오기
`git clone https://github.com/{유저이름}/ds-sample-git`
2.로컬 레포지토리 지우기
`rm -rf .git`
3.로컬에서 온라인 레포지토리 주소를 추가하기
`git remote add origin https://github.com/{유저이름}/ds-sample-git`
4.온라인 레포지토리 주소 확인하기
`git remote -v`
touch second.txt  # 파일 생성 
git add ./  # stage area 추가 
git commit -m '나의 두번째 commit입니다.' # commit
git log # log 확인
git status # 현재 상태 확인
git push origin main # 원격 배포

5.리눅스 명령어(bash쉘 기본명령어)

# git bash환경 / $생략
pwd 현재위치
mkdir '폴더명' 폴더생성
cd 폴더명 폴더클릭
ls 디렉토리 내 파일&폴더목록 출력
  - ls -l 상세정보 출력
  - ls -a 숨김파일표시
  - ls -al 숨김파일(+상세정보) 출력
cat 파일명 파일이름 터미널에 출력 / concatinate 병합의 의미
  - cat test.txt. test2.txt > test3.txt 두파일 합쳐서 새파일 생성
cp sample.py sample2.py 파일카피(원래파일 새파일명)
which python 프로그램/라이브러리가 설치된 위치 / where python(윈도우)
python --version
pip list 각 (가상)환경내에 설치된 라이브러리 목록 및 버전
pip uninstall numpy 기존설치된 라이브러리 삭제
pip install numpy==1.23 새버전의 라이브러리 설치

5-1.가상환경

conda --version
conda env list : 가상환경목록 / 디폴트 base
conda create --name 'practice' python=3.8  : 가상환경 설치
conda deactivate : 가상환경끄기
conda activate practice : 가상환경켜기
conda env remove --name 'practice' : 가상환경 삭제
- ctrl+a  줄 맨앞으로
- ctrl+e  줄 맨뒤로

5-2.Git

# 레포가져오기(리모트레포(깃헙레포) 통째로가져오기)
cd 디렉토리 : 레포 불러오고 싶은 위치로 이동
git clone https://github.com/codestates/ds-sample-git : 원격레포에서 로컬레포로 가져오기

# 레포주소추가하기(로컬레포(기존폴더)에 리모트레포주소 연결)
- 기존에 작업하던 깃 있는 로컬레포에 깃헙레포연결하기
git init : 깃 레포로 지정하기 (하위에 깃 폴더 생성) 
cd 디렉토리 : 작업중인 깃디렉토리 진입
git remote origin https://github.com/Jesimsim/ds-sample-git : 원격주소 연결(추가)(별명, 주소)
# git과 연동 
git config --global user.name "user name" /   "github 유저네임 Jesimsim"
git config --global user.email "user@.com"  /   "github 이메일주소 jesimsim@gmail.com"

5-3.파일 열기 및 수정

code : Visual studio VS 열기
vi Part_1.py : git bash에서 직접 열기 (cd로 디렉토리 들어간 후)
- e 에딧 o 읽기전용
- i 수정 esc 수정종료
- :wq 저장O종료 / :q 저장X종료

5-4.브랜치

# 브랜치
git remote -v 원격주소 출력
git remote add apple https://github.com/codestates/apple.git 원격주소 연결(추가)(별명, 주소)
git remote remove apple 원격주소 삭제

git branch 로컬브랜치목록 출력
git branch -al 로컬과원격의 모든 브랜치목록 출력
git checkout -b git-branch 브랜치생성, 하위브랜치생성시 브랜치이동>생성
git switch -c git-branch 브랜치생성
git checkout git-branch 브랜치이동, 브랜치병합시 상단브랜치로이동>merge 하위브랜치명
git branch -M main 메인브랜치로이동

# 브랜치 합치기
git checkout main 상위브랜치, 동등브랜치로 이동
git merge main2 로컬의하위브랜치 합치기
git merge origin/git-merge 혹은 원격레포의 브랜치 합치기
git status : git 확인, 현재추적하는파일, 변경상태, 브랜치명 등 
git log : 작업내역 / 어떤 문서 작업했는지, 어떤 과정으로 수정했는지, 컴퓨터 버전값까지
conda env list > result.txt  명령어결과를 파일로 저장

5-5.스테이징

# 스테이징아리아(버전관리 git add)
echo "Hello AI" > README.txt
touch test.py 새파일생성
git add README.txt git관리대상에 특정파일 추가
git add ./ : git관리대상으로 모든 파일 추가(디렉토리 내) / 파일생성시 꼭 추가해줘야 오류안생김

5-6.커밋

# 커밋
git commit -m "메시지" : 커밋 w/메시지 / 메시지필수(없을시 커밋안됨) / 옵션 -m필수, vi나 nano 등도 가능
git reset HEAD^ : 커밋취소(바로 직전 한단계로)
git commit --amend : 커밋메시지 변경

5-7.푸시,풀

git fetch apple main 원격주소의 변경사항 가져오기(원격주소명 로컬브랜치명) > 임시브랜치
git branch 로컬브랜치명 브랜치 이동
git merge 원격브랜치명(origin/git-merge) 원격주소의 변경사항 합치기 / 브랜치이동후 합쳐야 그 브랜치에 merge됨

git pull origin git-merge 원격주소의 변경사항 로컬브랜치에 덮어씌우기 (fetch+merge)
git push origin main : 변경사항 푸시하기(원격저장소별명 로컬브랜치명)/ 커밋 후 푸시해야 함 / origin main 생략가능(저장된곳으로)
git push -u origin git-branch (원격저장소명, 로컬브랜치명) > 미지정시 지정된 곳으로

git stash 작업임시저장

5-8.pytest 설치

# pytest 플러그인 설치
pip list | findstr pytest : 모듈 설치 여부 확인 명령어
pip install git+https://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@github.com/aib-contents/pytest-submit-plugin
# 혹은 pip install git+https://github.com/aib-contents/pytest-submit-plugin
pip list | findstr pytest : 모듈 설치 재확인
cd 과제폴더 :  과제폴더로 이동
pip install -r requirements.txt : 요구사양설치
# 과제 제출
python -m pytest --submit 과제제출 / !주의! 폴더위치확인하기 
winpty python -m pytest --submit (윈도우)과제제출
python -m pytest
python -m pytest tests/Part_1/test_Part_1.py 일부만 확인
python -m pytest --all 모든 과제 점수 확인
python -m pytest --help 도움말API
python -m pytest --score 점수확인
profile
ENTJ 데이터 분석가 준비중입니다:)

0개의 댓글