Code about AI/Python

pyvenv.cfg, venvμ—μ„œλŠ” νŒŒμ΄μ¬μ„ μ΄λ ‡κ²Œ μ‹€ν–‰ν•˜λ”λžλ‹ˆλ‹€

도비(Doby) 2024. 7. 28. 12:27

πŸ€” Problem

λͺ‡ 달 μ „λΆ€ν„° μ•„λ‚˜μ½˜λ‹€μ—μ„œ 독립적인 μž‘μ—… μ„ΈνŒ…μ„ μΆ”κ΅¬ν•˜κ³  μžˆμ–΄μ„œ, μ‹œκ°„μ΄ λ‚  λ•Œλ§ˆλ‹€ μ„ΈνŒ…μ„ λ°”κΏ”κ°€λŠ” 과정을 κ²ͺκ³  μžˆμ—ˆμŠ΅λ‹ˆλ‹€. 그리고, μ΄μ œμ•Ό μ™„μ „νžˆ λ…λ¦½λœ μž‘μ—… μ„ΈνŒ…μ΄ λ§Œλ“€μ–΄μ§„ κ±° κ°™μ•„ μ•„λ‚˜μ½˜λ‹€λ₯Ό μ‚­μ œν•˜κ³ , 그와 κ΄€λ ¨λœ λ§ˆμ§€λ§‰ 이슈λ₯Ό μ •λ¦¬ν•˜κ³ μž ν•©λ‹ˆλ‹€.

 

μš°μ„ , venvλ₯Ό ν†΅ν•΄μ„œ 가상 ν™˜κ²½μ„ λ§Œλ“€μ–΄ μž‘μ—…μ„ ν•΄μ˜€λ˜ μž…μž₯μ΄μ—ˆλŠ”λ° μ•„λ‚˜μ½˜λ‹€(μ•„λ‚˜μ½˜λ‹€ λ‚΄λΆ€μ˜ 파이썬 포함)λ₯Ό μ™„μ „νžˆ μ‚­μ œν•˜κ³ , νŒŒμ΄μ¬μ„ μž¬μ„€μΉ˜ν•΄μ„œ ν™˜κ²½ λ³€μˆ˜κΉŒμ§€ λ‹€μ‹œ μ„ΈνŒ…μ„ ν•΄μ£Όμ—ˆμ§€λ§Œ, μ‚­μ œ μ΄μ „μ˜ 가상 ν™˜κ²½λ“€μ€ λͺ¨λ‘ 이전 μ•„λ‚˜μ½˜λ‹€μ˜ νŒŒμ΄μ¬μ„ μ°ΎλŠ” 게 λ¬Έμ œμ μ΄μ—ˆμŠ΅λ‹ˆλ‹€. (파이썬 νŒŒμΌμ„ μ‹€ν–‰μ‹œν‚€λ©΄, μ•„λž˜μ™€ 같은 였λ₯˜κ°€ λ°œμƒν•©λ‹ˆλ‹€.)

python test.py
>>> No Python at '"C:\Users\user\anaconda3\python.exe'

λΆ„λͺ…νžˆ ν™˜κ²½ λ³€μˆ˜λ₯Ό μƒˆλ‘œμš΄ 파이썬의 κ²½λ‘œμ— 맞게 μž‘μ•„μ£Όμ—ˆλŠ”λ°, μ–΄λ–»κ²Œ 이전 파이썬 경둜λ₯Ό κΈ°μ–΅ν•˜κ³  μžˆλŠ”μ§€κ°€ μ˜λ¬Έμ΄μ—ˆμŠ΅λ‹ˆλ‹€. κΈ°μ‘΄ ν™˜κ²½ λ³€μˆ˜μ˜ κ²½λ‘œλŠ” μ‚­μ œλ₯Ό ν•΄μ£Όμ—ˆμœΌλ‹ˆ λ§μž…λ‹ˆλ‹€.


πŸ˜€ Solution

그러면, 'ν˜„μž¬ 가상 ν™˜κ²½ λ‚΄λΆ€μ˜ 파일 쀑에 νŒŒμ΄μ¬μ— κ΄€ν•˜μ—¬ 관리λ₯Ό ν•˜κ³  μžˆλŠ” 파일이 μžˆμ„ 것이닀'λΌλŠ” 가섀을 λ‚΄μ„Έμ› μŠ΅λ‹ˆλ‹€.

 

λ‹€λ₯Έ κ°€μ„€: '가상 ν™˜κ²½μ˜ python.exeλŠ” 심볼릭링크닀.'

더보기

μ΄μ „μ—λŠ” 'python.exe 파일이 심볼릭링크 파일일 것이닀.'λŠ” 가섀을 μ„Έμš°κ³  μ ‘κ·Όν–ˆμ§€λ§Œ, venv 곡식 λ¬Έμ„œμ—μ„œλŠ” κ·Έκ±Έ μΆ”μ²œν•˜μ§€ μ•Šμ„λΏλ”λŸ¬ μ˜λ„μ μœΌλ‘œ λͺ¨λ“  파일이 심볼릭링크가 λ˜κ²Œλ” λ§Œλ“€λ €κ³  ν–ˆλŠ”λ° μ‹¬λ³Όλ¦­λ§ν¬λ‘œλŠ” λ§Œλ“€ 수 μ—†λ‹€λŠ” μ—λŸ¬κ°€ λ°œμƒλ˜μ–΄ 이 가섀은 ν‹€λ Έλ‹€κ³  νŒλ‹¨ν–ˆμŠ΅λ‹ˆλ‹€.

 

κ·Έλž˜μ„œ, μ°Ύμ•„λ³΄λ‹ˆ 가상 ν™˜κ²½ 디렉터리 내뢀에 pyvenv.cfgλΌλŠ” νŒŒμΌμ—μ„œ 이런 λ‚΄μš©μ΄ λ‹΄κΈ΄ 것을 λ°œκ²¬ν–ˆμŠ΅λ‹ˆλ‹€. 

home = C:\Users\user\anaconda3
include-system-site-packages = false
version = 3.10.9

μ—¬κΈ°μ„œ home은 ν•΄λ‹Ή 가상 ν™˜κ²½μ—μ„œ μ‚¬μš©ν•˜λŠ” 파이썬이 어디에 μœ„μΉ˜ν•΄ μžˆλŠ”κ°€λ₯Ό λ‚˜νƒ€λ‚Έ κ²½λ‘œμž…λ‹ˆλ‹€. μœ„μ—μ„œ μ—λŸ¬κ°€ λ°œμƒν•œ κ²½λ‘œμ™€ 같은 κ²½λ‘œμž…λ‹ˆλ‹€. 즉, 이 νŒŒμΌμ—μ„œ μ›λž˜ 파이썬 경둜λ₯Ό μ°Έμ‘°ν•˜κ³  μžˆλ‹€λŠ” 것을 μ•Œ 수 μžˆμŠ΅λ‹ˆλ‹€.

 

ν•˜μ§€λ§Œ, μ—¬κΈ°μ„œ 더 의문이 μƒκΉλ‹ˆλ‹€. '가상 ν™˜κ²½μ—μ„œ μ‚¬μš©ν•˜λŠ” νŒŒμ΄μ¬μ€ 심볼릭링크가 μ•„λ‹ˆλΌκ³  νŒλ‹¨μ΄ λ˜λŠ”λ°, μ™œ μ—¬μ „νžˆ 원본 파이썬의 경둜λ₯Ό μ°Έμ‘°ν•΄μ•Όλ§Œ ν•˜λŠ”κ°€?'인데 이것은 ν’€λ¦¬μ§€λŠ” μ•Šμ•˜μŠ΅λ‹ˆλ‹€. 단, μ—¬μ „νžˆ μ›λž˜ 경둜의 νŒŒμ΄μ¬μ„ μ°Έμ‘°λ₯Ό ν•΄μ•Ό ν•œλ‹€λŠ” μ‚¬μ‹€λ§Œμ€ μ•Œκ³  μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€.

 

μΆ”κ°€μ μœΌλ‘œ, include-system-site-packagesλŠ” μ‹œμŠ€ν…œ μ „μ—­(base ν™˜κ²½)에 μ„€μΉ˜λœ λΌμ΄λΈŒλŸ¬λ¦¬λ“€μ„ μ‚¬μš©ν•  것이냐λ₯Ό λ¬»λŠ” 것인데 νŒ¨ν‚€μ§€μ˜ 독립성을 보μž₯ν•˜κΈ° μœ„ν•΄μ„œλΌλ©΄, 기본적으둜 false에 두어야 ν•©λ‹ˆλ‹€.

 

그리고, λ§ˆμ§€λ§‰μœΌλ‘œ version은 μ°Έμ‘°ν•˜λŠ” 파이썬의 λ²„μ „μž…λ‹ˆλ‹€.

 

결둠적으둜, μ΄λŸ¬ν•œ pyvenv.cfg 파일의 λ‚΄μš©μ— κΈ°λ°˜ν•˜μ—¬ μƒˆλ‘­κ²Œ μ„€μΉ˜ν•œ 파이썬의 κ²½λ‘œμ™€ 버전에 λ§žκ²Œλ” μ•„λž˜μ™€ 같이 μž¬μ„€μ •ν•΄μ£Όλ©΄, κΈ°μ‘΄ 가상 ν™˜κ²½μ˜ 파이썬이 μƒˆλ‘œμš΄ νŒŒμ΄μ¬μ„ μ°Ύμ•„ μ‹€ν–‰ν•˜λŠ” 것을 λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€.

home = C:\Python\Python312
include-system-site-packages = false
version = 3.12.4
python test.py
>>> Hello World

ν•˜μ§€λ§Œ, μ΄λ ‡κ²Œ 가상 ν™˜κ²½μ΄ λ°”λ€” λ•Œ 파이썬의 λ²„μ „λ§Œμ„ λ°”κΎΈλŠ” 것은 쑰금 μœ„ν—˜ν•  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€. 파이썬 버전 μžμ²΄μ— μ˜μ‘΄ν•˜μ—¬ μž‘λ™ν•˜λŠ” νŒ¨ν‚€μ§€λ“€μ΄ μžˆμ„ 수 있기 λ•Œλ¬Έμ— requirements.txtλ₯Ό μΆ”μΆœν•΄μ„œ λ”°λ‘œ 관리λ₯Ό ν•˜λŠ” 것이 쑰금 더 λ°”λžŒμ§ν•©λ‹ˆλ‹€.

728x90