if__name__=="main"
Tags: #troubleshooting, #__main__, #__name__, #scripting Solves Issue
Description
μ΅κ·Ό Python3λ₯Ό νμ©νμ¬ μ€ν¬λ¦½νΈλ₯Ό μμ±νκ³ μλ€. μ¬κΈ°μ 2κ°μ§ μ΄μ κ° μλλ° λ¨Όμ Python3 μ¬μ©μ μ΅μν΄μ§κΈ° μν΄μ, κ·Έλ¦¬κ³ νμμ μμ£Ό μ¬μ©νλ 컀맨λ λ±μ μ€ν¬λ¦½νΈλ‘ μλννμ¬ ν¨μ¨μ λμ΄κΈ° μν΄μλ€. νΉν 곡λΆνλ μ μ₯μμ Docker 컨ν μ΄λλ₯Ό μμ νλ μν©μ κ΅μ₯ν λ§μ΄ λ°μνλ€. κ³Όκ±°μ Docker μ€μ΅, νΉμ νλ‘μ νΈ μν κ³Όμ μμ μ€νλ 컨ν μ΄λ μ€ νμ¬μλ μ¬μ©νμ§ μλ κ²λ€λ λ§κΈ° λλ¬Έμ΄λ€.
μ΄ κ²½μ° μμ£Ό μΈν°λ· λΈλ‘κ·Έμμ 'λͺ¨λ λ컀 컨ν μ΄λ μμ ' νΉμ 'λͺ¨λ λ컀 컨ν μ΄λ μ΄λ―Έμ§ μμ ' λ±μ κ²μνκ±°λ μλμ° μ€ν°μ»€ λ©λͺ¨ λ±μ 컀맨λ λ±μ λ°λ‘ κΈ°λ‘ν΄λκΈ°λ νλ€.
μ΄μ λ μ΄μ λΈλ‘κ·Έλ₯Ό κΈ°μκ±°λ¦¬μ§ μκ³ , μ€ν¬λ¦½νΈ μμ± λ₯λ ₯λ κΈ°λ₯Ό κ²Έ Python3λ‘ λ°λ³΅ν΄μ μ¬μ©νλ λͺ
λ Ήμ΄ νΉμ μμ
μ μ€ν¬λ¦½νΈλ‘ μμ±νκ³ Githubμ 곡κ°νκΈ°λ‘ νλ€(λ ν¬μ§ν 리). μ΄λ²μ μμ±ν μ€ν¬λ¦½νΈλ λͺ¨λ λ컀 컨ν
μ΄λ μμ μ€ν¬λ¦½νΈ μ΄λ€. νμν λ©μλλ€μ κ²μνλ©° μ°¨κ·Όμ°¨κ·Ό μ§ννλ μ€ ν
μ€νΈ κ³Όμ μμ ν κ°μ§ λ¬Έμ κ° λ°μνλ€. pytest -v λͺ
λ Ήμ΄λ₯Ό ν΅ν΄ ν
μ€νΈ μν μ€ λ€μκ³Ό κ°μ μ€λ₯ λ©μμ§κ° λ°μνλ€.
========================================================== ERRORS ==========================================================
__________________________________ ERROR collecting remove_all_docker_containers_test.py ___________________________________
remove_all_docker_containers_test.py:5: in <module>
from remove_all_docker_containers import remove_containers
remove_all_docker_containers.py:46: in <module>
ask_user()
remove_all_docker_containers.py:36: in ask_user
answer = input("Continue? (y/N)")
/usr/local/lib/python3.10/dist-packages/_pytest/capture.py:192: in read
raise OSError(
E OSError: pytest: reading from stdin while output is captured! Consider using `-s`.
----------------------------------------------------- Captured stdout ------------------------------------------------------
All of your docker containers on your host will be removed.
Continue? (y/N)
================================================= short test summary info ==================================================
ERROR remove_all_docker_containers_test.py - OSError: pytest: reading from stdin while output is captured! Consider usin...
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Interrupted: 1 error during collection !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
===================================================== 1 error in 0.08s =====================================================
μ¬κΈ°μ μ¬μ©ν ν μ€νΈ μ½λμ μ€ν μμλ λ€μκ³Ό κ°λ€.
μμ 컨ν μ΄λ busybox μ€ν(ν μ€νΈ λμ 컨ν μ΄λκ° μμΌλ©΄ μλλ―λ‘)
'λͺ¨λ λ컀 컨ν μ΄λ μμ ' ν¨μ μ€ν
μ΄ν ν΄λΉ νΈμ€νΈμμ νμ¬ μ€ν μ€μΈ 컨ν μ΄λμ κ°―μκ° 0μ΄λ©΄ ν μ€νΈ ν΅κ³Ό, 0μ΄ μλλ©΄ ν μ€νΈ μ€ν¨
μ€λ₯ λ΄μ©μ μμ½ν΄λ³΄λ©΄ λ€μ μ€λ₯κ° ν΅μ¬ 문ꡬμμ μ μ μλ€.
ν
μ€νΈλ₯Ό μν΄ μΆλ ₯μ΄ μΊ‘μ³λλ μμ€μ stdinμμ μ
λ ₯μ λ°κ³ μλ€λ κ²μ΄λ€.
Troubleshooting
μ²μ μ΄ μ€λ₯μ λ°μ μμΈμ μκ°ν΄λ³΄μμ λ pytest μ체μ ν
μ€νΈ λμ ν¨μ νΉμ ν
μ€νΈ λμ ν¨μμ μλ μμ λ±μ μ νλ λͺ
λ Ήμ΄κ° μμΌλ©°, μ΄λ₯Ό νν μ§μ ν΄μ€μΌ μ μμ μΈ ν
μ€νΈκ° μ§νλλ μ€ μμλ€. μλνλ©΄ ν
μ€νΈμ½λ μ체μμ 컨ν
μ΄λλ₯Ό μμ νλ ν¨μλ§μ λΆλ¬μλλ° μ¬μ©μμκ² λͺ¨λ 컨ν
μ΄λλ₯Ό μ λ§ μμ ν κ²μΈμ§ 묻λ ask_user ν¨μκ° μ€νλκ³ μμμΌλ©°, κ·Έλ‘ μΈν΄ λ¬Έμ κ° λ°μνκΈ° λλ¬Έμ΄λ€.
μ΄λ₯Ό ν΄κ²°νκΈ°μν΄ κ΄λ ¨ λ΄μ©μ κ²μν΄λ³΄κ³ , pytest tutorialμμ μμ μ pytest μ¬μ©λ²μ 곡λΆν λ λμΉ λΆλΆμ΄ μλ μ΄ν΄λ³΄μλ€. μ΄ν΄λ³΄λ κ³Όμ μμ Fixtureλ Grouping the Tests λ±μ λ΄μ©μ μ μ©νκ² λ°°μ μ§λ§, μ΄λ¬ν λ΄μ©λ€μ΄ λ°μν λ¬Έμ μ ν΄κ²°μ±
μ μλμλ€.
κ·Έλ¬λ μ€ μμ μ Python3λ‘ μμ±λ μ½λλ₯Ό μ΄ν΄λ³Ό λ if __name__ == '__main__'μ΄ κ³΅ν΅μ μΌλ‘ λ€μ΄κ°μλ κ²μ νμΈν, μ΄κ²μ μν μ΄ κΆκΈν΄ κ²μν΄λ΄€λ κΈ°μ΅μ΄ λ¬λ€. μ μ½λμ κ΄λ ¨λ λ΄μ©μ μ€λͺ
νκ³ μλ 곡μ λ¬Έμλ₯Ό μ°Ύμ보λ ν΅μ¬ μν μ λ€μκ³Ό κ°μλ€.
the name of the top-level environment of the program, which can be checked using the
__name__ == '__main__'expression; andthe
__main__.pyfile in Python packages.
μ΄ λ κ°μ§ μ€λͺ
λ§μΌλ‘ μ€μ λ‘ μ΄λ€ μν μ μννλμ§ κ°μ΄ μ μ€μ§μλλ€. μ΄ν μ€ν¬λ‘€μ λ΄λ €λ³΄λ Idiomatic Usage λΆλΆλΆν° νμν λ΄μ©μ μ€λͺ
νκ³ μλ€. μ€λͺ
μ μ¬μ©ν μμ μν©λ§μ λ μ§κΈ μν©μ²λΌ ν
μ€νΈ μ½λλ₯Ό μμ±νλ κ³Όμ μμ λ°μνλ μλμΉμμ μ½λ μ€νμ μλ‘ λ€κ³ μλ€. λ¬Έμκ° μ€λͺ
νκΈ°λ₯Ό μΈλΆ νμΌλ‘λΆν° νΈμΆλλ κ²½μ° μ€νμ μμΉ μλ μ½λλ if __name__ == '__main__' μ½λ λ€ λμ΄ νΈλ¦¬νκ² μ€νμ λ°©μ§ν μ μλ€κ³ λ§νλ€. μ²μ μ΄λ€ κ°λ
μ 곡λΆν λ 곡μ λ¬Έμκ° λ무 λ§μ λ΄μ©λ€μ μμΈν λ€λ£¨κ³ μμ΄ μ½κΈ° κΊΌλ €μ§λ μκ°μ΄ μλ€. κ·Έλ¬λ νμ¬ μν©μ²λΌ Troubleshootingμ΄ νμν λ κ°μ₯ μ νν λ΅μ μ 곡νλ κ² λν 곡μλ¬Έμμ΄λ€.
μ΄λ² Troubleshooting κ³Όμ μμ λ ν κ°μ§ μκ²λ κ²μ΄ Python3μ κ²½μ° λ¨μν μΈλΆ ν¨μλ₯Ό νΈμΆνλ©΄ νΈμΆ λμ ν¨μ μΈμλ ν΄λΉ νμΌμ μ§μ μ€ννλ κ² μ²λΌ λμνλ€λ μ μ΄λ€. μ΄λ₯Ό μ¬μ μ μκ³ μμμΌλ©΄ μκ³ λ₯Ό λμμ ν
λ°, ν
μ€νΈ μ½λλ₯Ό μ€ννλ κ³Όμ μμ μκ²λλ€. μ΄λ° μν©μ λ§μ£Όνμ§ λͺ»ν΄ μ²μμ μ μ€λ₯κ° λ°μνλ μ§ μ΄ν΄νμ§ λͺ»νλ€. λν, μ΄λ¬ν μν©μ λ§μ£Όνμ μ΄ μμΌλ '__main__' λ₯Ό μ²μ λ°°μΈ λλ κ·Έ μλ―Έλ μ©λλ₯Ό μ λλ‘ νμ
νμ§ λͺ»νλ€.
κ·Έλ¬λ, ν
μ€νΈ μ½λ μμ±κ³Όμ μμ μ΄λ κ² μ§μ Troubleshootingμ μννκ³ λλ if __name__ == '__main__'μ νμμ±κ³Ό μ©λλ₯Ό μ λλ‘ κΉ¨μ°μΉ μ μμλ€.
μ΄νμ μ½λλ₯Ό μμ νκ³ pytest -vλ₯Ό ν΅ν΄ ν
μ€νΈλ₯Ό λ€μ μνν λ€μ μ²λΌ μ μμ μΈ ν
μ€νΈ κ²°κ³Όλ₯Ό νμΈν μ μμλ€.
μμ½ λ° λ°°μ΄μ
Python3λ μΈλΆ ν¨μλ₯Ό νΈμΆν κ²½μ°, ν΄λΉ ν¨μκ° μ μλ νμΌ μ체λ₯Ό μ€ννλ κ²κ³Ό κ°μ λμμ μννλ€.
if __name__ == '__main__'μ μ§μ μ€νλ λμ μΈλΆ νμΌλ‘ νΈμΆλ λμ μλ λ°©μμ ꡬλΆμ§λ μν μ νλ€.Troubleshootingμ΄ νμν λ 곡μ λ¬Έμλ₯Ό μ΄ν΄λ³΄μ.
Last updated