๐Ÿ“‚ Programming/Python

[Python] PEP8์—์„œ ๊ถŒ์žฅํ•˜๋Š” import ์ˆœ์„œ์™€ isort ์‚ฌ์šฉ๋ฒ•

dhyuck 2025. 2. 6. 21:39
๋ฐ˜์‘ํ˜•

Python ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ๋•Œ ์—ฌ๋Ÿฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ import ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

ํŠนํžˆ ์—ฌ๋Ÿฌ ์‚ฌ๋žŒ์ด ํ•จ๊ป˜ ์ž‘์—…ํ•˜๋Š” ๊ฒฝ์šฐ, ์ผ๊ด€๋œ import ๊ทœ์น™์„ ๋”ฐ๋ฅด๋ฉด ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ๊ณผ ์œ ์ง€๋ณด์ˆ˜์„ฑ์ด ๋†’์•„์ง€๊ณ , ๋ถˆํ•„์š”ํ•œ git ๋ณ€๊ฒฝ ์‚ฌํ•ญ๋„ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๊ธ€์—์„œ๋Š” Python ์Šคํƒ€์ผ ๊ฐ€์ด๋“œ์ธ PEP 8์—์„œ ๊ถŒ์žฅํ•˜๋Š” import ๊ทœ์น™์„ ์‚ดํŽด๋ณด๊ณ , ์ด๋ฅผ ์ž๋™์œผ๋กœ ์ •๋ฆฌํ•ด ์ฃผ๋Š” ๋„๊ตฌ์ธ isort์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

Python Import ์ˆœ์„œ Best Practice

PEP 8์—์„œ๋Š” import ๋ฌธ์„ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ์ •๋ฆฌํ•  ๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.

# 1. Standard Library(ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ)
import os
import sys
import json

# 2. Third-party Library(์„œ๋“œํŒŒํ‹ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ)
import boto3
import requests
import pandas as pd

# 3. Local Modules(๋กœ์ปฌ ๋ชจ๋“ˆ)
from my_project.utils import helper_function
from my_project.services import S3Inspector

# 4. ์ž˜๋ชป๋œ import ์˜ˆ์‹œ
from .utils import helper_function # โŒ : ์ƒ๋Œ€ ๊ฒฝ๋กœ๊ฐ€ ์•„๋‹Œ ์ ˆ๋Œ€ ๊ฒฝ๋กœ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
from os, sys       # โŒ : 1์ค„์— 1๊ฐœ์˜ ๋ชจ๋“ˆ๋งŒ import ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
from math import * # โŒ : import์—์„œ ์™€์ผ๋“œ์นด๋“œ๋Š” ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  1. Standard Library(ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ) Import
    Python์— ๊ธฐ๋ณธ์ ์œผ๋กœ ๋‚ด์žฅ๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์„ ๊ฐ€์žฅ ์ฒ˜์Œ์— import ํ•ฉ๋‹ˆ๋‹ค.
    ์˜ˆ๋ฅผ๋“ค์–ด os, sys, json๊ณผ ๊ฐ™์€ ๋ชจ๋“ˆ์ด ํ•ด๋‹น๋ฉ๋‹ˆ๋‹ค.

  2. Third-party Library(์„œ๋“œํŒŒํ‹ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ) Import
    pip ๋“ฑ์„ ํ†ตํ•ด ์„ค์น˜ํ•œ ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋‘๋ฒˆ์งธ๋กœ import ํ•ฉ๋‹ˆ๋‹ค.
    ์˜ˆ๋ฅผ ๋“ค์–ด boto3, requests, pandas๊ณผ ๊ฐ™์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ํ•ด๋‹น๋ฉ๋‹ˆ๋‹ค.

  3. Local Modules(๋กœ์ปฌ ๋ชจ๋“ˆ) Import
    ํ”„๋กœ์ ํŠธ ๋‚ด๋ถ€์—์„œ ์ž‘์„ฑํ•œ ๋ชจ๋“ˆ์ด๋‚˜ ํŒจํ‚ค์ง€๋ฅผ ๋งˆ์ง€๋ง‰์— import ํ•ฉ๋‹ˆ๋‹ค.

  4. ์ถ”๊ฐ€ Best Practices

    • ์ƒ๋Œ€ ๊ฒฝ๋กœ๋ณด๋‹ค ์ ˆ๋Œ€ ๊ฒฝ๋กœ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    • 1์ค„์— 1๊ฐœ์˜ ๋ชจ๋“ˆ๋งŒ import ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    • import์—์„œ ์™€์ผ๋“œ ์นด๋“œ๋Š” ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
    • import ๊ทธ๋ฃน ๋‚ด์—์„œ๋Š” ์•ŒํŒŒ๋ฒณ์œผ๋กœ ์ •๋ ฌํ•˜๊ณ  ๊ฐ ๊ทธ๋ฃน ๊ฐ„์—๋Š” ๋นˆ ์ค„์„ ์ถ”๊ฐ€ํ•ด ์‹œ๊ฐ์ ์œผ๋กœ ๊ตฌ๋ถ„ํ•ฉ๋‹ˆ๋‹ค.

isort ์‚ฌ์šฉ๋ฒ•

  • isort๋Š” Python ์ฝ”๋“œ์˜ import ๋ฌธ์„ ์ž๋™์œผ๋กœ ์ •๋ ฌํ•ด์ฃผ๋Š” ๋„๊ตฌ๋กœ PEP 8 ์Šคํƒ€์ผ ๊ฐ€์ด๋“œ์— ๋”ฐ๋ผ import ๋ฌธ์„ ์•ŒํŒŒ๋ฒณ ์ˆœ์„œ๋กœ ์ •๋ ฌํ•˜๊ณ  ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, ์„œ๋“œ ํŒŒํ‹ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, ๋กœ์ปฌ ๋ชจ๋“ˆ์„ ๊ตฌ๋ถ„ํ•ฉ๋‹ˆ๋‹ค.

  • isort ์„ค์น˜ ๋ฐฉ๋ฒ•

      # isort ์„ค์น˜
      pip install isort
      pip3 install isort 
      brew install isort
  • isort ์‚ฌ์šฉ ๋ฐฉ๋ฒ•

      # ํŠน์ • ํŒŒ์ผ ์ •๋ ฌ
      isort mypythonfile.py
      isort mypythonfile_1.py mypythonfile2.py
    
      # ๋””๋ ‰ํ† ๋ฆฌ ๋‚ด ๋ชจ๋“  Python ํŒŒ์ผ ์ •๋ ฌ
      isort .
    
      # ์ˆ˜์ • ์—†์ด ์ •๋ ฌ ํ™•์ธ
      isort mypythonfile.py --check
    
      # ๋ณ€๊ฒฝ ์‚ฌํ•ญ ํ™•์ธ
      isort mypythonfile.py --diff
๋ฐ˜์‘ํ˜•

'๐Ÿ“‚ Programming > Python' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Python] datetime ๋ชจ๋“ˆ ์ •๋ฆฌ  (1) 2023.04.21
[Python] collections Counter ์‚ฌ์šฉ๋ฒ•  (0) 2021.09.06
[Python] ๋ฌธ์ž์—ด ๋‹ค๋ฃจ๊ธฐ  (0) 2021.08.21