가끔 클래스를 사용하다 보면, 선언과 Type에 대한 에러 때문에 갈필을 못잡을 때가 있습니다.

여기서는 TypeError 중에 missing argument에 대해 이야기해보고자 합니다.


01. TypeError: [여러분의 함수] missing [숫자] required positional argument: [여러분의 함수의 인자값]

TypeError: [여러분의 함수] missing [숫자] required positional argument: [여러분의 함수의 인자값]

위의 에러에서는 분명히 Class를 입력했음에도 불구하고 TypeError로 우리가 인자값에 제대로 된 값을 넣어주지 않았다는 에러 메시지를 출력합니다.

이런 경우 정말 억울하기도 하고, 혹시 내가 잘못 입력한 건 아닌가 하며 시간을 낭비하기도 합니다.

저도 이런 에러 때문에 시간을 많이 잡아먹혔었지요.


예제를 먼저 보도록 합시다.


class 선언

#python 3.x source
#FileName : TestClass.py

class Test:
	def __init__(self):
		print('init')
		
	def TestFunc(self, Argument):
		print('Type of Argument  : ', type(Argument))
		print('Value of Argument : ', Argument)


main 선언

#python 3.x source
#FileName : TestMain.py

from TestClass import Test

def main():
	Data = 0x01234567
	
	Test.TestFunc(Data)
	
if __name__ == "__main__":
	main()


여기서 class 파일의 8번 째 줄을 보면, self와 Argument라는 인자값을 받는 것을 볼 수 있습니다.

따라서 TestFunc() 함수에서는 self를 제외한 다른 하나의 인자값이 필요합니다.

즉, TestClass의 TestFunc() 함수를 하기 위해 Data라는 값을 Argument 인자값에 넣어주어 실행시켜봅니다.


이때 발생하는 에러 메시지는 다음과 같을 것입니다.


TypeError: TestFunc() missing 1 required positional argument: 'Argument'


이때의 에러 메시지는 1개의 인자값이 필요합니다, 라는 직역으로 해석이 가능합니다.

하지만 에러가 발생하는 원인은 따로 있습니다.


바로 Class의 선언이 없기 때문입니다.


이러한 에러를 해결하기 위해서는 main 소스를 다음과 같이 수정해볼 수 있습니다.


main 선언(오류 해결)

#python 3.x source
#FileName : TestMain.py

from TestClass import Test

def main():
	T = Test()

	Data = 0x01234567
	
	T.TestFunc(Data)
	
if __name__ == "__main__":
	main()


오류가 해결된 소스의 7번 줄과 11번 줄을 보면 Test라는 클래스를 따로 선언을 해준 뒤 이를 이용하여 함수를 불러오는 것을 확인할 수 있습니다.

즉, Class의 선언 없이 해당 클래스의 함수를 사용하려 했기 때문에 발생하는 오류를 해결해준 것입니다.



<다른 Type Error는 차차 업로드 예정...>


만약 여러분께서 pip를 사용하려고 할 때 사용이 안 될 경우가 있습니다.

간혹, 이런 오류 문구를 보실 것입니다.


 Fatal error in launcher: Unable to create process using '"C:\....."  "C:\....." install [module]' 


이런 경우 해결할 수 있는 방법은 다음과 같습니다.


01. pip upgrade

첫 번째로, python 명령을 통해 pip를 업그레이드 해주시면 됩니다.

이 경우의 해결할 수 있는 명령어는 다음과 같습니다.


 python -m pip install pip --upgrade pip 


여기서 python의 -m 옵션은 library 모듈을 스크립트의 형태로 실행시키는 것을 의미합니다.

이 경우는 pip를 업그레이드 하여 상위의 버전으로 설치한다는 의미입니다.


이후 pip 명령을 통해 설치하고자 하는 모듈을 설치해주시면 됩니다.

'

 pip install [설치하고자 하는 모듈] 




02. python -m install

두 번째로, python 명령의 옵션을 이용하여 pip 설치를 해주는 방법입니다.

위의 방법대로 pip가 업그레이드 되었음에도 불구하고 pip를 이용하여 설치가 되지 않을 경우 해당 방법을 사용하면 됩니다.

여기서는 위의 업그레이드 방법과 유사한 방법으로, python의 -m 옵션을 이용하여 설치하시면 됩니다.

python 옵션을 이용한 모듈 설치 명령은 다음과 같습니다.


 python -m pip install [설치하고자 하는 모듈]


해당 명령을 통해 pip를 실행시켜 설치하고자 하는 모듈을 설치하시면 됩니다.



'PYTHON > Python 관련 오류잡기' 카테고리의 다른 글

python 클래스 TypeError 오류 해결  (3) 2018.07.24

+ Recent posts