tensorflow 실행시 No module named distutils 오류 해결방법

텐서플로(tensorflow) 설치후에 import 조차 되지 않는 상황이 발생했다. No module named 'distutils' 라는 오류였는데 구글링 하며 찾아보니, python 3.12 부터는 distutils 패키지가 표준 라이브러리에서 제거되었다.

No module named ‘distutils’

우선 발생한 오류메시지이다. import tensorflow as tf 만 실행했는데, 바로 오류가 발생했다.

{
	"name": "ModuleNotFoundError",
	"message": "No module named 'distutils'",
	"stack": "---------------------------------------------------------------------------
ModuleNotFoundError                       Traceback (most recent call last)
Cell In[4], line 1
----> 1 import tensorflow as tf

File ~/python3/tensorflow/.venv/lib/python3.12/site-packages/tensorflow/__init__.py:30
     15 \"\"\"
     16 Top-level module of TensorFlow. By convention, we refer to this module as
     17 `tf` instead of `tensorflow`, following the common practice of importing
   (...)
     26 this file with a file generated from [`api_template.__init__.py`](https://www.github.com/tensorflow/tensorflow/blob/master/tensorflow/api_template.__init__.py)
     27 \"\"\"
     28 # pylint: disable=g-bad-import-order,protected-access,g-import-not-at-top
---> 30 import distutils as _distutils
     31 import importlib
     32 import inspect as _inspect

ModuleNotFoundError: No module named 'distutils'"
}

해결방법

없다고 오류를 발생시키니 distutils 를 찾아 설치해야 하는건가 싶었는데, 개발자들이 수시로 받고 사용하는 라이브러리일텐데, import 단계에서 이런 단순한 오류가 발생할리가 없었다. 공식 홈페이지에가서 설치환경을 찾아 읽어봤다.

TensorFlow는 다음 64비트 시스템에서 테스트 및 지원됩니다.
* Python 3.6~3.9
* Ubuntu 16.04 이상
* Windows 7 이상(C++ 재배포 가능 패키지)
* macOS 10.12.6(Sierra) 이상(GPU 지원 없음)

그렇다. TensorFlow 2 는 Python 3.6~3.9 환경에 설치해야 한다고 공식웹페이지에 잘 나와있다. 읽지도 않고, python 3.12 에서 tensorflow 를 설치했었으니, 될리가 없었다. 다시 환경을 3.9로 변경하여 설치해야 했다. 나는 보통 가상환경 venv 로 python 설치하기 때문에 쉽게 삭제하고 낮출 수 있었다. 자세한 방법은 아래 포스팅들을 클릭해서 참고한다.

설치를 했으니, python 버전을 확인한다.

$ python --version
Python 3.9.14

pip 업그레이드도 한번 진행해준다.

$ pip install --upgrade pip
Requirement already satisfied: pip in ./.venv/lib/python3.9/site-packages (24.3.1)

그리고 나서 tensorflow 설치를 진행한다.

$ pip install tensorflow   
Collecting tensorflow
  Downloading tensorflow-2.18.0-cp39-cp39-macosx_12_0_arm64.whl.metadata (4.0 kB)
...(중략)...
Successfully installed MarkupSafe-3.0.2 absl-py-2.1.0 astunparse-1.6.3 certifi-2024.8.30 charset-normalizer-3.4.0 flatbuffers-24.3.25 gast-0.6.0 google-pasta-0.2.0 
grpcio-1.67.1 h5py-3.12.1 idna-3.10 keras-3.6.0 libclang-18.1.1 markdown-3.7 markdown-it-py-3.0.0 mdurl-0.1.2 ml-dtypes-0.4.1 namex-0.0.8 numpy-2.0.2 
opt-einsum-3.4.0 optree-0.13.1 protobuf-5.28.3 requests-2.32.3 rich-13.9.4 tensorboard-2.18.0 tensorboard-data-server-0.7.2 tensorflow-2.18.0 
tensorflow-io-gcs-filesystem-0.37.1 termcolor-2.5.0 urllib3-2.2.3 werkzeug-3.1.3 wheel-0.45.0 wrapt-1.16.0

이제 실행이 잘된다. 텐서플로 버전을 확인했으니 이제 공부만 하면 될 듯 하다.

import tensorflow as tf
print("TensorFlow version:", tf.__version__)
# TensorFlow version: 2.18.0

더 보면 좋을 글들