본문 바로가기
삽질

Pythonchallenge Level13 오류

맥북에는 system에 설치된 python이 존재한다. 나의 경우에는 3.9.6 버전이 /usr/bin/python3에 설치되어 있다. 

8월 달에는 이러한 사실을 모르고 python을 homebrew라는 패키지 매니저를 통해서 받았다. 

homebrew에서 사용한 python에서는 pip install을 하는데 externally managed environment 문제를 계속 띄워서 짜증 나서 지워버렸다. 

homebrew에서 받은 python을 지운 후 공식 python 사이트에서 받았다. 

 

코드는 여기서 가져왔다. 그냥 테스트용 코드이다. 

 

import xmlrpc.client

conn = xmlrpc.client.ServerProxy("http://www.pythonchallenge.com/pc/phonebook.php")
print(conn.phone("Bert"))

 

현재 사용하고 있는 버전은 Python 3.13이다.

python3 --version
Python 3.13.0

 

xmlrpc는 python에 built-in 모듈이라서 pip install을 따로 할 필요가 없다.  실행하면 바로 결과가 나와야 하는데 이런 에러만 보여주고 만다. 

 

 

Vultr에 있는 ubuntu에 설치한 버전은 python 3.12.3이다. python 설치는 apt 패키지 매니저로 설치했었던 걸로 기억한다. 

 

python3 --version
Python 3.12.3

 

재미있는 점은 Vultr에 설치한 ubuntu에서도 같은 error를 일으킨다는 것이다. 

 

뇌피셜이지만 이것도 x86-64와 arm 사이에 호환성 때문에 Python에서 일어나는 문제인 것 같다.

 

Python path도 굉장히 길다. 보통의 경우 linux에 python을 설치하면  /usr/bin/python에 있다.

which python3
/Library/Frameworks/Python.framework/Versions/3.13/bin/python3

 

혹시 $PATH에 문제가 있어서 그런 게 아닌가 싶어서 확인해 봤는데 딱히 문제가 있는 것처럼 보이지는 않는다. 

 

  1 PS1='hwkim301:\w macbook\$ '
  2 # eval "$(/opt/homebrew/bin/brew shellenv)"
  3 export BASH_SILENCE_DEPRECATION_WARNING=1
  4 export CLICOLOR=1
  5 alias ls='ls -G'
  6 alias ll='ls -lG'
  7 touch ~/.hushlogin
  8 
  9 # Added by OrbStack: command-line tools and integration
 10 # Comment this line if you don't want it to be added again.
 11 # source ~/.orbstack/shell/init.bash 2>/dev/null || :
 12 
 13 # Setting PATH for Python 3.13
 14 # The original version is saved in .bash_profile.pysave
 15 PATH="/Library/Frameworks/Python.framework/Versions/3.13/bin:${PATH}"
 16 export PATH

 

homebrew로 설치한 python이 완전히 삭제된 게 아니라서 문제를 일으킬 수도 있다고 판단해서 chatGPT 한테 물어보니 아래의 command로 확인해 보라고 알려줬다. 실행결과 잘 지워진 것으로 나왔다.

 

 

brew list | grep python

 

locate python3을 돌려보면 또 homebrew 밑에 python3.12 관련된 무언가가 엄청 많다. 

ChatGPT에게 지워도 되냐고 물어보니 system python과 관련 있는 게 아니기 때문에 지워도 된다고 했다. 참고로 너무 파일이 많고 혹시 쓰일지도 몰라서 지우지는 않았다. 

 

/opt/homebrew/lib/python3.12/site-packages/wheel-0.44.0.dist-info/METADATA
/opt/homebrew/lib/python3.12/site-packages/wheel-0.44.0.dist-info/RECORD
/opt/homebrew/lib/python3.12/site-packages/wheel-0.44.0.dist-info/REQUESTED
/opt/homebrew/lib/python3.12/site-packages/wheel-0.44.0.dist-info/WHEEL
/opt/homebrew/lib/python3.12/site-packages/wheel-0.44.0.dist-info/direct_url.json
/opt/homebrew/lib/python3.12/site-packages/wheel-0.44.0.dist-info/entry_points.txt
/opt/homebrew/opt/python3
/opt/homebrew/share/man/man1/python3.1
/opt/homebrew/share/man/man1/python3.12.1

 

아래의 command들을 실행해 보니 brew로 설치한 python은 없다고 나오는데 python 3.12에 linking은 되어 있다고 한다. 

 

brew list --versions | grep python

 

brew --prefix python
/opt/homebrew/opt/python@3.12

 

미치겠다. 우리 집 데스크탑 성능이 별로 좋지 않은데 훨씬 비싼 m3가 python 성능은 더 안 좋으니...

이 문제 말고도 조금 계산을 해야 하는 코드를 m3 맥북과 desktop에서 비교해 봤는데 m3 맥북이 훨씬 오래 걸린다... 

시간 차이는 10배 이상 난다.

참고로 데스크탑은 python 버전이 3.9인가 그렇게 높지 않다.

 

문제 해결 

 

10월 21일 기준으로 우리 집 데스크탑에서 python 3.13 버전으로 동일한 코드를 테스트했는데 xmlrpc.client는 여전히 제대로 작동하지 않았다. PythonChallenge forum에 가보니 나와 동일한 문제를 겪고 있는 사람들이 있었다.

결론은 현재로써는 xmlrpc.client로는 해당 문제를 풀 수 없다. Pythonchallenge 내부적으로 문제가 있는 것으로 보인다. 

Python 성능도 문제도 해결했다. Windows에서는 코드 중간값을 계속 출력하여 중간 결과를 계속 print 했는데 맥에서는 그렇게 하지 않고 결괏값만 보여주다 보니 상대적으로 느리게 보인 것뿐이었다. 

 

내 문제나 Apple Silicon 문제인 줄 알고 별의별 걸 다 뒤졌다... 진짜 삽질 좀 그만하고 싶다.