본문 바로가기
info : 유용한 정보, 체험기

맥/윈도우/리눅스 파이썬 python 연습 환경 설정, vscode 비주얼 스튜디오 코드 셋팅

by 퇴근길에 삼남매가 알려드림 2022. 10. 24.

visual studio git hub 연동을 해서 vscode로 코딩을 한다고 할 때, 유용한 설정을 소개한다.

vscode의 여러 설정들이 있지만, 본 글에서는 세 가지 설정에 대해서 이야기해보도록 하겠다.

코딩할 때 한글 맞춤법 검사기처럼 특정 스타일대로 코딩이 되었나 확인해주는 점이 참 편하다. 

본 글에서는 로컬머신과 원격 머신에서 스타일 적용을 할 수 있는 환경설정에 대해 다루어 보겠다.

목차

1. 코딩 문법/스타일 설정해주는 세팅
2. 파이썬 가상 환경 설정 선택해서 code visual studio 
3. SSH, 원격 서버에서도 연결하는 셋팅 HPC 같은 리눅스 서버든, 윈도우 서버든.. remote server 
4. PEP8 스타일

 


     

    코딩 스타일 PEP8 확인 셋팅

    맥이든 윈도우든 로컬 머신에서 코딩 스타일을 체크하는 경우는 다음과 같이 한다.

    일단 확장 파일을 설치한다 (맥 : 커맨드 + 쉬프트 + 영어 X 키 , 윈도우 : 컨트롤+쉬프트+X). 

     

     

    1. 파이썬을 설치한다. 

    2. Pylance 도 설치한다. 

     

    코딩할 파일을 연다. (맥 : 커맨드 + 쉬프트 + 영어 P 키 , 윈도우 : 컨트롤+쉬프트+P) 을 누르면 코딩 스타일을 선택할 수 있다.

    Python: select Linter

    을 클릭하고

    Linter로 pycodestyle을 선택하면 PEP8 스타일에 맞게 코딩한 글을 확인해준다.

     

    필요에 따라서는 visual studio code 가 알아서 "pycodestyle"을 다운받으라고 해준다.

    다운 받기 누르면 된다.

    이렇게 나오면 install을 눌러서 다운 받으면 된다. 

    아니면 그냥 conda install pycodestyle -n <env> 도 된다.

     

    다운로드하자. 

     

    그러면 이제 창 맨 아래쪽에 

    이렇게 x, warning 사인 등이 보이는 행이 보이는데 그걸 클릭하면

    스타일 안내 문구 예시들

    위 사진과 같이 pycodestyle (pep8)의 법칙에 알맞지 않은 코드의 위치와 [ln #, col# :행, 열 위치] 문제점을 알려준다. 

    위의 경우, imports 할 때 여러 모듈을 한 줄에 import 했고,

    코멘트를 # 로 시작했고, 

    { 뒤에 빈칸이 있다.

     

    각 경고문을 클릭하면 해당 줄로 이동한다. 그러면 수정하면 됨.

    반복하다 보면 문법이 익숙해진다.

     

    참고 pycodestyle vs autopep8 차이:

    • Pycodestyle: identifies pep8 style violations.  뭐가 틀렸나 확인해주는 것
    • autopep8: automatically fixes most violations identified by pycodestyle. 틀린 것 고쳐주는 것
      즉, autopep8을 다운받으면, pycodestyle로 찾아진 문제점들을 자동으로 고쳐준다 (대부분). 

     

    기본적인 PEP8에 대한 글은 다음 글을 참고하길!

     -> 공식문서 https://peps.python.org/pep-0008/ 

    -> 가장 기본적인 내용을 안내 :  

     


     

    특정 파이썬을 vscode에서 쓰고 싶을 때 (anaconda python virtual environment)

    즉, 아나콘다 파이썬을 비주얼 스튜디오에서 쓰고 싶을 때

     

    기본 세팅을 바꾸고 싶을 때

     

    톱니바퀴 모양을 누르고 설정에 들어간다.

    설정에서 interpreter을 치면 

    이 나온다. 이때 아래칸에 원하는 기본 파이썬 패키지 위치를 넣어주면 된다.

    ~ /anaconda3/envs/py39/bin/python 

    이런 식으로.  (이렇게 하면 아나콘다 가상환경 py39 의 파이썬을 기본 파이썬으로 쓰는 게 된다)

     

    이렇게 직접 주소를 쓰기 싫다면 

    맥 : 커맨드 + 쉬프트 + 영어 P 키 , 윈도우 : 컨트롤+쉬프트+P) 을 누르고 interpreter를 친다.

    파이썬 코드 정하는 법

    그러면 이렇게 쓸 수 있는 파이썬 버전들이 있다.

    위의 사진에서는 usr/bin에 깔린 파이썬, anaconda base 파이썬, 아나콘다 가상 환경 py39파이썬을 볼 수 있다.

    여기서 'anaconda'의 파이썬을 클릭하면 해당 아나콘다 파이썬 주소가 Default interpreter path에 적힌다.

     

    파이썬 코드 작성할 때 맥 : 커맨드 + 쉬프트 + 영어 P 키 , 윈도우 : 컨트롤+쉬프트+P) 을 누르고 interpreter를 쳐서, 원하는 파이썬 패키지로 그때 그 때 바꿔줄 수 있다.

    이걸 아는 게 중요한 이유는 비주얼 스튜디오에서 코드를 실행시키고 결괏값을 확인할 때

    디버깅할 때 비주얼 스튜디오가 쓰는 파이썬 버전을 특정 파이썬 패키지로 바꿀 필요가 있기 때문이다.

     

    vscode git 할 때 해당 환경에 대한 conda env에서 일하고 결과 확인하고, 커밋하면 좋다.


     

     

     

     

    원격 서버에 연결해서 vscode로 코딩하고 싶을 때 (SSH)

    3. 리눅스 나 다른 곳에 연결해서 원격 파일을 visual studio code로 수정하고 싶을 때 (ssh)

     

    로컬 머신 말고 원격 파일, 예를 들어  linux 리눅스 서버 파일도 윈도우나 맥에서 vs studio code를 이용해 수정하고 디버깅할 수 있다.

    vim쓰지 않고, 아니면 원격에서 파일 수정한 후에 sftp/scp. 매번 하지 않고 vccode로 코딩하는 방법이다.

     

    일단, Remote- SSH  확장 파일을 설치한다 (맥 : 커맨드 + 쉬프트 + 영어 X 키 , 윈도우 : 컨트롤+쉬프트+X). 

     

    ssh 설정하는 법

    설치하면 위 왼쪽 사진처럼 모니터 모양으로 생긴 게 나타난다. remote explorer라고 한다.

    이걸 누르면 SSH TARGETS라는 탭이 나타난다. (가운데 사진)

    톱니바퀴 모양을 눌러서 맨 처음 나타나는 ~.config 파일을 클릭한다.

    이제 이 파일에, ssh 정보를 적는다.  

     

    만약 sourcetree와 visual studio code를 연결했으면 sourcetree generated 정보로 github에 ssh 한 정보가 나타난다. 

     

    예를 들어 학교 리눅스 서버에 연결할 거면 아래와 같은 정보를 적는다. 

     Host 

       HostName

       Port

       User

     

    Host는 이 ssh를 뭐라고 부를 건지 적는다. (예: school_server)

    HostName 은 서버 주소를 적는다. (예를 들어서 평소 ssh 할 때 ssh 아이디@어딘가의주소)라고 하면 '어딘가의 주소'를 적는다.

    User는 아이디를 적는다.

    Port는 만약 ssh 할 때 포트를 지정해야 하면 (즉 평소 ssh 할 때 ssh 아이디@어딘가의주소 -p 포트넘버) 라고 하면 포트넘버를 적는다.

     

    필요에 따라서 ssh identityFile 등을 적어야 할 수도 있다.

    위의 ssh 주소는 Terminal, PowerShell, MobaXterm 등에서 연결 잘 되는지 확인하고, 적자.

     

    예시

    Host school_server

       HostName 어딘가의주소

       User 아이디

       Port 포트넘버

     

    이렇게 적고 저장한다.  visual studio code 의 자동완성을 이용하면 오타날 걱정은 없다!

     

    그러면 school_server 가 ssh_target 아래에 나타나고 그걸 클릭하면 오른쪽 사진처럼 새창에서 연결하기 버튼이 나타난다.

    그러면 새로운 창에서 ssh로 연결이 된다. 플랫폼이 뭐냐고 물을 텐데, 리눅스 서버면 리눅스라고 클릭해준다.

     

    이제 비밀번호 물어볼 텐데 비밀번호 입력한다. 

     

    그러면 연결되었을 것이다. 

    창 아랫쪽에 초록색으로 연결 되었다고 뜬다.

    그리고 폴더 열기 / 로컬 디렉토리 보기 등으로 폴더 열어준다.

    그리고 평소처럼 파일을 열고 수정한다. 

     

    비주얼 스튜디오에서 터미널 여는 건 창 맨 위에 보기 (View)를 누르면 terminal 이 보인다.

    아니면 컨트롤 + ' 을 누르면 터미널 윈도우가 나온다.

     

     

    참고로 서버가 끊기는 걸 방지하기 위해  ssh config파일에 아래 두 라인을 추가한다.

     

    ServerAliveInterval 60

    ServerAliveCountMax 10

     

     

    또한, 만약 매번 비밀번호 입력하기 싫다면 ssh key 를 만들고 

    ssh-keygen

    이 key path를 IdentityFile 에 추가해준다.

     

     

     

    1. remote server 에 .vscode-server 디렉토리가 생겼을 것이다.

     

    remote server 의 conda environment 를 python interpreter로 쓰고 싶다.

    terminal 에서 활성화는 되는데... interpreter 로 인식이 안된다.

     

    일단, ssh 서버에도 ㅣocal 에서 다운 받았던 것처럼 확장파일로 python ,pylance을 다운 받는다.  

    그러면 .vscode-server/extensions 폴더 안에 파이썬이 생긴다.

    이렇게 파이썬을 vs code 안에서 다운 받아야 설정에서 python 관련 항목들을 고치고 원격 서버의 아나콘다를 쓸 수 있다.

     

    설정에 들어가면remote ssh:  설정에서 conda path, default interpreter path 등을 쓸 수 있다.

    이 후에 .vscode-server/data/Machine/settings.json 에 아래와 같은 코드를 넣어주어 파이썬 기본값을 설정해준다.

     

    {
        "python.defaultInterpreterPath": "remote python code (Eg. ~/anaconda3/envs/py39/python",
        "python.linting.pylintEnabled": true,
        "python.linting.pylintPath": "pycodestyle"
    }

     

    만약 가상환경에 pycodestype이 없으면 vscode가 conda 로 스타일 설치할 건지 묻는다.

    설치해주면 로컬이랑 똑같이 필요하면 가상환경을 바꾸어 가며 코딩 스타일 검수 받으며 쓸 수 있다.

     

     

    참고로 :

    setting 에서 enableRemoteCommand 를 활성화 시키고, ssh config 파일에서 

    RemoteCommand 에 

    source .bashrc; conda activate <virtual env>; module load 등 필요한 코멘드를 써준다.

    이론상으로 ssh 연결 했을 때 RemoteCommand 의 값들이 활성화된다.

     

    내 경우에는 source .bashrc 까지는 된 거 같은데 conda activate <virtual env>는 vscode의 터미널에서 따로 써주어야 했다.

    (interpretator 설정은 이거랑 상관없이 잘 됨)

    - 추가:  리모트 커맨드 값 작동 됨. 

     

    PEP 8 스타일

    • 코드를 짠 스타일, 문법이 같으면 협업 할 때 보다 편하고 효율적으로 일 할 수 있다.

    https://peps.python.org/pep-0008/

    위의 링크에 자세한 건 설명되어 있으니까 몇 가지만 소개해 보겠다.
    1) 이름 정하는 방법
    • - 변수, 함수(function), 방법(method), 패키지, 모듈: (variables, functions, methods, packages, modules) 소문자로_아래바_로_이어서
      • 예시: cal_this_val
    잠깐, function/ method 차이는?

    독립된 코드 조각으로 기능을 하는 게 function임. 수학에서 f(x)=y처럼, x라고 입력하면 y가 나오게 하는 코드 조각임.
    method는 이런 function이 class 안에 있을 때 method라고 함. 즉 이 경우  function 부르듯 그냥 메소드 이름 불러서는 쓸 수 없고, 클래스 붙여서 그 안에서 쓸 수 있는 것. 
    • 클래스, 예외 : 단어 첫 글자를 대문자로 
      • 예시 : TheExcep, GreatClass
    •  클래스 내부에서만 쓰는 함수나, 보호하려는 방법 등은 앞에 아래바를 하나만 붙인다.
    '클래스 내부에서만 쓰는 함수' 란 말은 클래스 외부에서 볼 수 없다는 게 아니다.
    그렇게 하기로 암묵적으로 하기로 하는 함수,라고 생각하면 편하다.
    다양한 예시를 통해서 점차 익혀가도록 하자.)
    예시 : _single_underscore_fun(self,...)
    • 상수 : 모두대문자_아래바로_이어서
      • 예시:THE_CONST

    2. 빈칸 갯수도 규칙이 있다.

    들여쓰기나 주석쓰기는 탭 (Tabs) 키 쓰지 말고 스페이스 4개 쓰자.

     

    설명이 부정확하면 안 하느니 못하다.

    코드가 말처럼 "읽히게" 쓰는 게 주석을 길게 다는 것보다 나음.

     

    조건이 아닌 이상 연산자를 쓸 때 빈칸을 연산자 앞뒤로 써준다.

     

    예시 :

    val1 = 0

    val1=0 (삐! )

     

    3) 패키지 import 할 때 주의 점

    (1) 순서는 

     - 시스템 

    - 제 3자 패키지

    - 로컬 소스 트리 패키지

     

    순으로 불러오고, 각각 빈 줄 하나를 넣어서 구분해준다.

     

    (2) 패키지 하나당 하나씩 불러오자.

    (좋은 예시)

    import os

    import sys

    (삐 )

    import os, sys

     

    (3) from test_package import *

    같이 "*" 을 써서 임폴트 (wildcard import) 하지 말자. 

    이렇게 불러오면 어떤 이름이 존재해야 하는지 헷갈리기 때문이다. 

     

    즉, 

    import test_package 

    라고 하거나

    from test_package import sub_pk

    •  
    • from subprocess import Popen, PIPE

    이런 식으로 확실히 써주자.

    이런 걸 언제 다 외우나 할 것이다.. 그래서 비주얼 스튜디오 코드에서 pep8 스타일을 적용시켜서 문법 체크를 해주는 것이다.


    마무리

    코딩을 할 때, 편하게 할 수 있는 유용한 도구를 알아 보았다.

    댓글로 설명이 더 필요한 부분을 요청해준다면 추가해보도록 하겠다.

     

     

    댓글


    TOP