πŸ“š μŠ€ν„°λ””/파이썬 μŠ€ν„°λ”” κ°•μ˜μžλ£Œ

[3νŒ€/κΉ€κ·œλ¦¬] 9μ£Όμ°¨ 파이썬 μŠ€ν„°λ”” - λͺ¨λ“ˆκ³Ό νŒ¨ν‚€μ§€

kyuree 2023. 5. 25. 15:52

9α„Žα…‘α„‰α…΅_모듈ᄀα…ͺα„‘α…’α„α…΅α„Œα…΅_α„€α…ͺα„Œα…¦α„ƒα…‘α†Έα„‹α…‘α†«.pdf
0.15MB
9α„Žα…‘α„‰α…΅_모듈ᄀα…ͺα„‘α…’α„α…΅α„Œα…΅_α„€α…ͺα„Œα…¦.pdf
3.26MB
9α„Žα…‘α„‰α…΅_모듈ᄀα…ͺα„‘α…’α„α…΅α„Œα…΅_ᄀᅑᆼ의ᄋᅑᆫ.pdf
1.77MB

 

#1. λͺ¨λ“ˆκ³Ό νŒ¨ν‚€μ§€μ˜ 이해

νŒŒμ΄μ¬μ€ 맀우 κ°„κ²°ν•œ ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄

κ·Έ κ°€μž₯ 큰 이유

  • λ§Žμ€ μ‚¬λžŒλ“€μ΄ 이미 파이썬으둜 ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•΄λ‘μ—ˆκΈ° λ•Œλ¬Έ!

λͺ¨λ“ˆ(module) → 이미 μž‘μ„±λœ ν”„λ‘œκ·Έλž¨

νŒ¨ν‚€μ§€ (packages)→ 이런 ν”„λ‘œκ·Έλž¨μ˜, λͺ¨λ“ˆμ˜ 묢음

λͺ¨λ“ˆμ˜ κ°œλ…


  • λ§Žμ€ μ œν’ˆλ“€μ€ μ—¬λŸ¬ λΆ€ν’ˆμœΌλ‘œ κ΅¬μ„±λ˜λ©°, λͺ¨λ“ˆν™”λ˜μ–΄ 판맀되고 있음
    • λŒ€ν‘œμ μΈ 예 ; 레고 블둝
      • ν•˜λ‚˜λ§ŒμœΌλ‘œλ„ μ œν’ˆ but, λ‹€λ₯Έ 블둝과 μ—°κ²° 및 큰 λ°‘νŒμ— μ‘°λ¦½ν•¨μœΌλ‘œμ¨ κ±°λŒ€ν•œ μž‘ν’ˆλ„ λ§Œλ“€ 수 있음
      • μ΄λ•Œ 레고 블둝 ν•˜λ‚˜ν•˜λ‚˜κ°€ λ°”λ‘œ λͺ¨λ“ˆ
      • μžλ™μ°¨ λΆ€ν’ˆ, 벽돌 .. λ“±

νŒ¨ν‚€μ§€μ˜ κ°œλ…


  • λͺ¨λ“ˆμ˜ 묢음
  • λͺ¨λ“ˆ 호좜
    • ‘from’ μ‚¬μš©
    • λͺ¨λ“ˆ ν˜ΈμΆœν•˜κΈ° μœ„ν•΄ νŒ¨ν‚€μ§€λΆ€ν„° ν˜ΈμΆœν•˜λŠ” λͺ…λ Ήμ–΄

 

#2. λͺ¨λ“ˆ λ§Œλ“€κΈ°

λͺ¨λ“ˆ λ§Œλ“€κΈ° μ‹€μŠ΅


  • in 파이썬 → .py 파일 μžμ²΄κ°€ λͺ¨λ“ˆμž„
  • κ°€μž₯ μ‰½κ²Œ 파이썬 λͺ¨λ“ˆ λ§Œλ“œλŠ” 방법
    • λ””λ ‰ν„°λ¦¬μ—μ„œ .py파일 λ§Œλ“€κ³ 
    • κ·Έ νŒŒμΌμ— ν•„μš”ν•œ ν•¨μˆ˜ μ €μž₯
    • ⇒ λ‹€λ₯Έ νŒŒμΌμ—μ„œ importλ¬Έ μ‚¬μš©ν•˜μ—¬ ν•΄λ‹Ή λͺ¨λ“ˆ ν•¨μˆ˜ λΆˆλŸ¬λ‚Ό 수 있음
  • κ°„λ‹¨ν•œ λͺ¨λ“ˆ λ§Œλ“€μ–΄ 보기(1)→ .py둜 μ €μž₯ν•΄μ•Ό 함
#파일 이름 : fah_converter.py
def convert_c_to_f(celcius_value):
		return celcius_value * 9.0 / 5 + 32

→ .py둜 μ €μž₯ν•΄μ•Ό 함

λͺ¨λ“ˆ λΆˆλŸ¬μ™€ μ‚¬μš©ν•΄λ³΄κΈ°

#파일 이름 : module_ex.py
#1

import fah_converter

print("Enter a celsisus value:")
celsius = float(input())
fahrenheit = fah_converter.cover_c_to_f(celsius)
print("That's", fahrenheit, "degrees Fahrenheit.")

λ„€μž„μŠ€νŽ˜μ΄μŠ€(Namespace)


  • λͺ¨λ“ˆ 호좜의 λ²”μœ„ μ§€μ •ν•˜λŠ” 것
  • ν•˜λ‚˜μ˜ λͺ¨λ“ˆ μ•ˆμ— 클래슀 & ν•¨μˆ˜ & λ³€μˆ˜ 쑴재 → import μ‚¬μš©ν•˜μ—¬ 호좜 κ°€λŠ₯
  • but, ν΄λΌμ΄μ–ΈνŠΈ ν”„λ‘œκ·Έλž¨ ν•¨μˆ˜ 이름과 호좜된 λͺ¨λ“ˆ ν•¨μˆ˜ 이름 같은 경우 있음
    • μ‹€μˆ˜ λ˜λŠ” κΈ°μ‘΄ 클래슀 상속받아 μ‚¬μš©ν•˜λ‹€κ°€ λ°œμƒν•  μˆ˜λ„ μž‡μŒ
  • ⇒ 호좜된 λͺ¨λ“ˆμ˜ μ‚¬μš© λ²”μœ„ λͺ…ν™•νžˆ μ§€μ •ν•΄μ•Ό 함!
  • λ„€μž„μŠ€νŽ˜μ΄μŠ€ λ§Œλ“€κΈ°
    1. λͺ¨λ“ˆ 이름에 μ•Œλ¦¬μ•„μŠ€(alias) 생성 → λͺ¨λ“ˆ μ•ˆμœΌλ‘œ μ½”λ“œ ν˜ΈμΆœν•˜λŠ” 방법
      • μ•Œλ¦¬μ•„μŠ€ → μΌμ’…μ˜ 별칭, λͺ¨λ“ˆμ˜ 이름 λ°”κΏ” λΆ€λ₯Ό λ•Œ μ‚¬μš©
        • λͺ¨λ“ˆμ˜ 이름이 λ„ˆλ¬΄ κΈΈκ±°λ‚˜ λ‹€λ₯Έ μ½”λ“œμ™€ ν—·κ°ˆλ¦¬λŠ” 이름일 λ•Œ
        • as ν‚€μ›Œλ“œ μ‚¬μš© → λͺ¨λ“ˆ 이름 κ°„λ‹¨νžˆ λ°”κΏ” μ‚¬μš©
    • μ˜ˆμ‹œ
    import fah_converter as fah
    print(fah.covert_c_to_f(41.6)) #106.88000000000001
    
    • μ„€λͺ…
      • fah_converter → fah둜 이름 λ³€κ²½ν•˜μ—¬ 호좜
      • ν•΄λ‹Ή λͺ¨λ“ˆ μ•ˆ ν•¨μˆ˜ 클래슀 λ³€μˆ˜ ν˜ΈμΆœν•˜μ—¬ μ‚¬μš©ν•˜κΈ°
        • [λͺ¨λ“ˆλͺ….ν•¨μˆ˜λͺ…(λ˜λŠ” 클래슀λͺ…/λ³€μˆ˜λͺ…)]
    1. from ꡬ문 μ‚¬μš© → λͺ¨λ“ˆμ—μ„œ νŠΉμ • ν•¨μˆ˜ 및 클래슀만 ν˜ΈμΆœν•˜λŠ” 방법
    • μ˜ˆμ‹œ
    from fah_converter import covert_c_to_f
    print(covert_c_to_f(41.6))  #106.88000000000001
    
    • μ„€λͺ…
      • ‘from λͺ¨λ“ˆλͺ… import λͺ¨λ“ˆ μ•ˆμ˜ ν•¨μˆ˜λͺ…’
      • 이경우, λ³„λ„μ˜ λͺ¨λ“ˆλͺ… μ“°μ§€ μ•Šμ•„λ„ 단독 μ‚¬μš© κ°€λŠ₯
      • μ£Όμ˜ν•  점
        • from은 κΌ­ λͺ¨λ“ˆ ν˜ΈμΆœν•˜κΈ° μœ„ν•œ ν‚€μ›Œλ“œκ°€ μ•„λ‹˜
        • νŒ¨ν‚€μ§€ 호좜 및 ν•΄λ‹Ή νŒ¨ν‚€μ§€ μ•ˆ λͺ¨λ“ˆ ν˜ΈμΆœν•  λ•Œλ„ μ‚¬μš©ν•˜κΈ°μ—
    1. λ³„ν‘œ(*) μ‚¬μš©
      • ν•΄λ‹Ή λͺ¨λ“ˆ μ•ˆμ— μžˆλŠ” λͺ¨λ“  ν•¨μˆ˜, 클래슀. λ³€μˆ˜ κ°€μ Έμ˜΄
      • μ‚¬μš© 방법
        • ‘from λͺ¨λ“ˆλͺ… import *’
      • μ˜ˆμ‹œ
      from fah_converter import *
      print(convert_c_to_f(41.6)) #106.88000000000001
      
  • μ„Έ κ°€μ§€ 쀑 κ°€μž₯ μ„ ν˜Έν•˜λŠ” 방법?
    • 일반적으둜 μ•Œλ¦¬μ•„μŠ€ μƒμ„±ν•˜μ—¬ 호좜
      • 각각의 ν•¨μˆ˜ 및 ν΄λž˜μŠ€κ°€ μ–΄λ””μ„œ λ‚˜μ˜€λŠ”μ§€ λͺ…ν™•νžˆ ν‘œν˜„ν•˜λŠ” 것이 μ’‹κΈ° λ•Œλ¬Έ!
      • ⇒ 같은 ν•¨μˆ˜λΌλ„ convert_c_to_f보닀 fah.convert_c_to_f라고 ν‘œκΈ°

λ‚΄μž₯λͺ¨λ“ˆμ˜ μ‚¬μš©


파이썬 → ν”„λ‘œκ·Έλž˜λ° κ°œλ°œμœ„ν•΄ 기본적 μ‚¬μš©ν•΄μ•Ό ν•˜λŠ” 문자 처리, μ›Ή, μˆ˜ν•™κ³Ό κ΄€λ ¨λœ λ‹€μ–‘ν•œ λ‚΄μž₯ λͺ¨λ“ˆ 제곡/ 별닀λ₯Έ 쑰치 없이 importλ¬Έ ν•œ μ€„λ‘œ μ‚¬μš© κ°€λŠ₯

  • random λͺ¨λ“ˆ
    • λ‚œμˆ˜ 생성 λͺ¨λ“ˆ
    • λͺ¨λ“ˆ ꡬ성
      • randint(); μ •μˆ˜ λͺ¨λ“ˆ 생성
      • random(); μž„μ˜ λ‚œμˆ˜ 생성
    • μ‚¬μš© μ˜ˆμ‹œ
    import random
    #0~100사이 μ •μˆ˜ λ‚œμˆ˜ 생성
    print(random.randint(0,100)) #7
    
    print(random.random()) #0.056550421789531846
    
  • time λͺ¨λ“ˆ
    • μ‹œκ°„κ³Ό κ΄€λ ¨
    • μ‹œκ°„ λ³€κ²½ 및 ν˜„μž¬ μ‹œκ° μ•Œλ €μ€Œ
    • λŒ€ν‘œμ μœΌλ‘œ ν”„λ‘œκ·Έλž¨ λ™μž‘ν•˜λŠ” ν˜„μž¬ μ‹œκ° μ•Œ 수 있음
    • μ‚¬μš© μ˜ˆμ‹œ
    #ν˜„μž¬ μ‹œκ° 좜λ ₯
    import time
    print (time.localtime())  #time.struct_time(tm_year=2018, tm_mon=8, tm_mday=19, tm_hour=22, tm_min=9, tm_sec=21, tm_wday=6, tm_yday=231, tm_isdst=0)
    
  • urllib λͺ¨λ“ˆ
    • μ›Ήκ³Ό 관련됨
    • λŒ€ν‘œμ μœΌλ‘œ request λͺ¨λ“ˆμ„ μ‚¬μš©ν•˜λ©΄ νŠΉμ • URL의 정보 뢈러올 수 있음
    • μ‚¬μš© μ˜ˆμ‹œ
    import urllib.request
    response = urllib.request.urlopen("<http://theteamlab.io>") 
    print(response.read())
    
    • urllib.request.urlopen()
      • κ΄„ν˜Έ μ•ˆμ— νŠΉμ • μ›Ή μ£Όμ†Œ μž…λ ₯ν•˜λ©΄ ν•΄λ‹Ή μ£Όμ†Œμ˜ HTML 정보 κ°€μ Έμ˜΄
  • μ΄μ™Έμ˜ λ‹€μ–‘ν•œ 파이썬 λͺ¨λ“ˆμ€?
    • κ°€μž₯ 쒋은 방법은 ꡬ글에 μ„œμΉ˜!
    • 특히 μ˜μ–΄λ‘œ..
    • if ν”„λ‘œκ·Έλž˜λ° μˆ˜ν–‰μ— κ±Έλ¦° μ‹œκ°„ μ•Œμ•„λ‚΄λŠ” λͺ¨λ“ˆ μ°Ύκ³  μ‹Άλ‹€λ©΄?
    • λ‹€μŒκ³Ό 같은 λ°©μ‹μœΌλ‘œ 검색어 μž…λ ₯
      • python time module run time
    • 또 λ‹€λ₯Έ 방법?
      • 파이썬 코리아에 문의

#3. νŒ¨ν‚€μ§€ λ§Œλ“€κΈ°

νŒ¨ν‚€μ§€μ˜ ꡬ성


  • ν•˜λ‚˜μ˜ λŒ€ν˜• ν”„λ‘œμ νŠΈλ₯Ό μˆ˜ν–‰ν•˜κΈ° μœ„ν•œ λͺ¨λ“ˆμ˜ 묢음
  • λͺ¨λ“ˆμ˜ ꡬ성
    • ν•˜λ‚˜μ˜ 파일
  • νŒ¨ν‚€μ§€ ꡬ성
    • 파일이 ν¬ν•¨λœ 디렉터리(폴더)둜 ꡬ성
    • 즉, μ—¬λŸ¬ 개의 .py 파일 → ν•˜λ‚˜μ˜ 디렉터리에 λ“€μ–΄κ°€ μžˆλŠ” 것
  • 라이브러리
    • λ‹€λ₯Έ μ‚¬λžŒμ΄ λ§Œλ“  ν”„λ‘œκ·Έλž¨μ„ λΆˆλŸ¬μ™€ μ‚¬μš©ν•˜λŠ” 것
    • 파이썬 → νŒ¨ν‚€μ§€κ°€ ν•˜λ‚˜μ˜ λΌμ΄λΈŒλŸ¬λ¦¬μž„
  • νŒ¨ν‚€μ§€μ˜ μ˜ˆμ•½μ–΄

νŒ¨ν‚€μ§€ λ§Œλ“€κΈ° μ‹€μŠ΅


  • μΈν„°λ„·μ—μ„œ 주식 정보 가져와 λ°μ΄ν„°λ² μ΄μŠ€μ— μ €μž₯ + ν•„μš”ν•œ 정보 계산 ν”„λ‘œκ·Έλž¨

1단계: 디렉터리 ꡬ성

  • νŒ¨ν‚€μ§€ 이름
    • ‘roboadvisor’
    • λŒ€λΆ€λΆ„ μ†Œλ¬Έμž μ‚¬μš©
  • κΈ°λŠ₯
    • crawling(크둀링)
      • 주식 κ΄€λ ¨ 데이터λ₯Ό μΈν„°λ„·μ—μ„œ κ°€μ Έμ˜€λŠ” κΈ°λŠ₯
    • database(λ°μ΄ν„°λ² μ΄μŠ€)
      • κ°€μ Έμ˜¨ 데이터λ₯Ό λ°μ΄ν„°λ² μ΄μŠ€μ— μ €μž₯ν•˜λŠ” κΈ°λŠ₯
    • analysis(뢄석)
      • ν•΄λ‹Ή 정보λ₯Ό λΆ„μ„ν•˜μ—¬ 의미 μžˆλŠ” 값을 λ½‘μ•„λ‚΄λŠ” κΈ°λŠ₯
  • 각 νŒ¨ν‚€μ§€ λ‚΄ → μ„ΈλΆ€ νŒ¨ν‚€μ§€μ— 맞좰 디렉터리 κ΅¬μ„±ν•˜κΈ°
    • cmd 창에 λ‹€μŒ λͺ…λ Ή μž…λ ₯ → 디렉터리 생성
    mkdir roboadvisor 
    cd roboadvisor 
    mkdir crawling 
    mkdir database 
    mkdir analysis
    
  • 디렉터리 ꡬ성됨

  • 2단계: λ””λ ‰ν„°λ¦¬λ³„λ‘œ ν•„μš”ν•œ λͺ¨λ“ˆ λ§Œλ“€κΈ°
    • ν•˜λ‚˜μ˜ νŒ¨ν‚€μ§€ μ€‘μ²©λœ ꡬ쑰둜 λ§Œλ“€ 수 μžˆμœΌλ―€λ‘œ νŒ¨ν‚€μ§€ μ•ˆμ— 또 ν•˜λ‚˜μ˜ νŒ¨ν‚€μ§€ λ“€μ–΄κ°ˆ 수 있음
    • but, 각 디렉터리λ₯΄ ν•˜λ‚˜μ˜ νŒ¨ν‚€μ§€λ‘œ μ„ μ–Έν•˜κΈ° μœ„ν•΄μ„œλŠ” μ˜ˆμ•½λœ 파일 λ§Œλ“€μ–΄μ•Ό 함
    • ⇒ ‘init.py’
    • init.py’ ?
      • 각 디렉터리가 νŒ¨ν‚€μ§€μž„μ„ λ‚˜νƒ€λ‚΄λŠ” μ˜ˆμ•½ 파일
      • κΈ°λ³Έ .py λͺ¨λ“ˆ 파일 + 각 디렉터리에 ‘init.py’ 파일 μΆ”κ°€ → νŒ¨ν‚€μ§€ κΈ°λ³Έ ꡬ쑰 λ§Œλ“€μ–΄μ§
    • 각 디렉터리 μ•ˆμ— .py파일 λ§Œλ“€μ–΄ ꡬ성!
    • 각 ν•˜μœ„ νŒ¨ν‚€μ§€ ν¬ν•¨λœ λͺ¨λ“ˆμ— ν•„μš”ν•œ κΈ°λŠ₯을 κ΅¬ν˜„
      • analysis 디렉터리
        def series_test():
        		print('series')
        
        def statics_test():
        		print("statics")
        
    • μ‹€μ œ μ‚¬μš© → 파이썬 셸에 μž…λ ₯
    from roboadvisor.analysis import series 
    series.series_test()  #series
    
    → roboadvisor의 μƒμœ„ λ””λ ‰ν„°λ¦¬μ—μ„œ 파이썬 μ…Έ μ‹€ν–‰ν•΄μ•Ό 정상적 μˆ˜ν–‰
    • μ„€λͺ…
      • **pycache**’ 생성
        • ν•΄λ‹Ή ν”„λ‘œκ·Έλž¨ μž‘λ™λ  λ•Œ μ‚¬μš©ν•˜κΈ° μœ„ν•œ λͺ¨λ“ˆλ“€μ˜ 컴파일 κ²°κ³Ό μ €μž₯
        • 이후 κ·Έ μ‹œμ μ—μ„œ ν•΄λ‹Ή λͺ¨λ“ˆμ„ μˆ˜γ…Žμ •ν•΄λ„ κ²°κ³Όκ°€ λ°˜μ˜λ˜μ§€ X
        • μ™„μ „νžˆ μ’…λ£Œλœ ν›„ μˆ˜μ •ν•΄μ•Ό κ²°κ³Ό 반영됨
  • 3단계: λ””λ ‰ν„°λ¦¬λ³„λ‘œ ‘init.py’ κ΅¬μ„±ν•˜κΈ°
  • 4단계: ‘main.py’ 파일 λ§Œλ“€κΈ°
    • νŒ¨ν‚€μ§€λ₯Ό ν•œ λ²ˆμ— μ‚¬μš©ν•˜κΈ° μœ„ν•΄ roboadvisor 디렉터리에 main,py 파 일을 λ§Œλ“¦
    • λ§Œλ“œλŠ” 이λ₯˜
      • νŒ¨ν‚€μ§€ 자체 μ‹€ν–‰ μœ„ν•΄
    • 파일 ꡬ성
      • κΈ°λ³Έ ν˜ΈμΆœν•΄μ•Ό ν•˜λŠ” μ—¬λŸ¬ λͺ¨λ“ˆ
        • from & import둜 호좜 → ‘if name == ‘ main ‘ μ•„λž˜μ— μ‹€μ œ μ‹€ν–‰μ½”λ“œ μž‘μ„±
        from analysis.series import series_test
        from crawling.parser import parser_test
        
        if name == ’ main
        		series_test()
        		parser_test()
        
        
  • 5단계: μ‹€ν–‰ν•˜κΈ° (νŒ¨ν‚€μ§€ μ΄λ¦„λ§Œ 호좜)
    • λͺ¨λ“  μ½”λ“œ μž‘μ„± ν›„ ν•΄λ‹Ή νŒ¨ν‚€μ§€ μ΅œμƒμœ„ λ””λ ‰ν„°λ¦¬μ—μ„œ ‘python νŒ¨ν‚€μ§€λͺ…’ μž…λ ₯
    python roboadvisor 
    series
    parser
    

νŒ¨ν‚€μ§€ λ„€μž„μŠ€νŽ˜μ΄μŠ€


  • λͺ¨λ“ˆ μ„œλ‘œ ν˜ΈμΆœν•  λ•Œ μ‚¬μš©ν•˜λŠ” νŒ¨ν‚€μ§€ λ„€μž„μŠ€νŽ˜μ΄μŠ€μ— λŒ€ν•΄ μ•Œμ•„λ³΄μž
  • λͺ¨λ“ˆκ³Ό 달리 훨씬 더 λ§Žμ€ 쀑간 단계λ₯Ό 거쳐 λ³΅μž‘ν•¨
  • μ’…λ₯˜
    • μ ˆλŒ€ μ°Έμ‘°
      • 전체 νŒ¨ν‚€μ§€μ˜ ꡬ쑰 생각 → λͺ¨λ“ˆμ˜ 경둜 λͺ¨λ‘ 호좜
    • μƒλŒ€ μ°Έμ‘°
      • ν˜ΈμΆœν•˜λŠ” 디렉터리λ₯Ό κΈ°μ€€μœΌλ‘œ 호좜
  • μ ˆλŒ€ μ°Έμ‘°
  • μƒλŒ€ μ°Έμ‘°

#4. κ°€μƒν™˜κ²½ μ‚¬μš©ν•˜κΈ°

κ°€μƒν™˜κ²½μ˜ κ°œλ…


  • λ‹€λ₯Έ κ°œλ°œμžκ°€ λ§Œλ“  νŒ¨ν‚€μ§€λ₯Ό 직접 μ‚¬μš©ν•˜λŠ” 방법
  • 각 ν”„λ‘œμ νŠΈμ— λ§žλŠ” ν”„λ‘œκ·Έλž˜λ° ν™˜κ²½μ„ μ„€μ •ν•˜λŠ” 것이 μ’‹μŒ
    • ex. 데이터 λ‹€λ£¨λŠ” ν”„λ‘œμ νŠΈ / μ›Ή λ‹€λ£¨λŠ” ν”„λ‘œμ νŠΈ → 성격이 맀우 닀름
  • 파이썬 → 이런 경우 지원 μœ„ν•΄ κ°€μƒν™˜κ²½μ΄λΌλŠ” κ°œλ…μœΌλ‘œ νŒ¨ν‚€μ§€ 관리 도ꡬ 제곡
  • 일반적으둜 ν”„λ‘œμ νŠΈ μˆ˜ν–‰ν•  λ•Œ
    • μ½”λ“œ μˆ˜ν–‰ν•  κΈ°λ³Έ 인터프리터
    • ν”„λ‘œμ νŠΈλ³„λ‘œ ν•„μš”ν•œ μΆ”κ°€ νŒ¨ν‚€μ§€κΉŒμ§€ μ„€μΉ˜
    • ⇒ μ„œλ‘œ λ‹€λ₯Έ ν”„λ‘œμ νŠΈ 영ν–₯ μ£Όμ§€ μ•Šλ„λ‘ 독립적인 ν”„λ‘œμ νŠΈ μˆ˜ν–‰ ν™˜κ²½μ„ ㅅꡬ성할 수 μžˆλŠ”λ° 이λ₯Ό κ°€μƒν™˜κ²½μ΄λΌκ³  함
  • λŒ€ν‘œμ μΈ 가상황경 도ꡬ
    • virtualenv
      • 파이썬 κΈ°λ³Έ 제곡 κ°€μƒν™˜κ²½ 도ꡬ
      • pip μ΄μš©ν•˜μ—¬ μƒˆλ‘œμš΄ νŒ¨ν‚€μ§€ μ„€μΉ˜ κ°€λŠ₯
    • conda
      • miniconda의 μ „μš© νŒ¨ν‚€μ§€ 관리 도ꡬ
      • κ°€μƒν™˜κ²½ 관리 + νŒ¨ν‚€μ§€ μ„€μΉ˜

κ°€μƒν™˜κ²½ μ„€μ •ν•˜κΈ°


  • conda μ‚¬μš© → κ°€μƒν™˜κ²½ μ„€μ • 방법 μ•Œμ•„λ³΄μž

 

  • κ°€μƒν™˜κ²½ λ§Œλ“€κΈ°
    1. cmd 창에 λ‹€μŒκ³Ό 같은 λͺ…λ Ήμ–΄ μž…λ ₯
    conda create -n my_project python=3.4
    
    • μ„€λͺ…

  • conda
    • μ‹€ν–‰ λͺ…λ Ήμ–΄
  • create
    • κ°€μƒν™˜κ²½ λ§Œλ“œλŠ” 인수(argument)
  • -n
    • name 의 μ€„μž„λ§
  • my_project
    • ꡬ성할 κ°€μƒν™˜κ²½ 이름
  • python=3.4
    • μ„€μΉ˜λ˜λŠ” 파이썬의 버전

⇒ ‘my_project라 λŠ” μ΄λ¦„μ˜ κ°€μƒν™˜κ²½μ„ python 3.4 λ²„μ „μœΌλ‘œ λ§Œλ“€μ–΄λΌ.’

  • λͺ…λ Ήμ–΄ μž…λ ₯ν›„
    • ‘Proceed ([y]/n)?’ → y μž…λ ₯ → μ„€μΉ˜ μ‹œμž‘
  • κ°€μƒν™˜κ²½ μ‹€ν–‰ν•˜κΈ°
    • 가상화면 λ§Œλ“€λ©΄ λ‚˜νƒ€λ‚˜λŠ” ν™”λ©΄μ—μ„œ μ„€λͺ…ν•΄μ€Œ
    • ‘activate my_project’
      • ν•΄λ‹Ή κ°€μƒν™˜κ²½μ„ ν™œμ„±ν™”ν•˜λΌλŠ” 의미
      • ν˜•μ‹
        • [activate 가상화면 이름]
      • μ΄μ œλΆ€ν„° ν•΄λ‹Ή κ°€μƒν™˜κ²½μ˜ μΈν„°ν”„λ¦¬ν„°λ§Œ 싀행됨
    • ‘where python’
      • ν˜„μž¬ μ‹€ν–‰λ˜λŠ” 파이썬의 μœ„μΉ˜ 좜λ ₯
    • ‘deactivate’
      • κ°€μƒν™˜κ²½ μ’…λ£Œ
  • κ°€μƒν™˜κ²½ νŒ¨ν‚€μ§€ μ„€μΉ˜ν•˜κΈ°
    • ‘conda install matplotlib’
      • ν˜•μ‹
        • [conda install μ„€μΉ˜ν•  νŒ¨ν‚€μ§€ 이름]
      • matplotlib
        • κ·Έλž˜ν”„ 관리 νŒ¨ν‚€μ§€
  • κ°€μƒν™˜κ²½ νŒ¨ν‚€μ§€ μ‹€μŠ΅ν•˜κΈ°
    • matplotlib μ‹€μŠ΅
      • μ½”λ“œ
      import matplotlib.pyplot as pit
      pit.plot([1, 2, 3, 4])  #[<matplotlib.lines.Line2D object at 0x000001E8CC52C080>]
      
      plt.ylabel('some numbers')  #Text(0, 0.5,'some numbers')
      plt.show()