Web Programming/Linux CentOS

[CentOS 7] Python3 설치 및 버전 변경과 Tensorflow, Keras 설치

안녕하세요 씨앤텍 시스템즈 봉시윤 연구원입니다.

이번 포스트는 Linux CentOS 7버전

Python3 설치 및 버전 변경과 Tensorflow, Keras 설치 입니다.

 

 

 

 

글의 구성은 다음과 같습니다.

1. python3 설치

2. python2.7 에서 python 3.6 버전 변경 (Symbolic Link)

3. Tesorflow, Keras 설치


1. Python3 설치

 

먼저 자신의 CentOS에 미리 설치되어 있는 python 버전을 확인합니다.

[root@localhost /]# python-V
Python 2.7.5

업그레이드 전 파이썬의 위치를 파악합니다.

[root@localhost ~]# which python
/usr/bin/python

파이썬이 설치되어 있는 위치안에 파이썬 버전들을 확인합니다.

(이미 파이썬 3.6버전이 설치되어 있다면 파이썬 설치 항목은 건너뛰시고, 심볼링 링크 항목으로 이동해 주셔도 됩니다.)

[root@localhost ~]# ls /bin | grep python
python
python2
python2.7

python3를 설치합니다. 

[root@localhost ~]# yum install python3
Complete!

위에 문구가 뜨면 python3가 설치가 되었다는 의미 입니다.

 


python3 버전을 확인합니다.

[root@localhost /]# python3 -V
Python 3.6.8

2. python2.7 에서 python 3.6 버전 변경

리눅스에서는 어떤 버전의 파이썬을 사용할지 선택해줘야 하는데 이것을

 

"심볼릭 링크 Symbolic Link"

 

라고 합니다.

 

 

먼저 리눅스에서 어떤 버전의 파이썬으로 선택되어 있는지 확인합니다.

[root@localhost ~]# update-alternatives --config python

만약 아무것도 뜨지 않았다면 설정이 안되어 있다는 의미 입니다. 

 


[root@localhost ~]# update-alternatives --install /bin/python python /bin/python2.7 1
[root@localhost ~]# update-alternatives --install /bin/python python /bin/python3.6 2

파이썬 버전 2.7과 3.6을 추가 시켜줍니다. (#주의: 절대 2.7을 삭제하지 마세요. yum사용을 위함)


 

그 다음 다시한번 등록되어 있는 파이썬 버전을 확인합니다.

[root@localhost ~]# update-alternatives --config python

2 개의 프로그램이 'python'를 제공합니다.

  선택    명령
-----------------------------------------------
   1           /bin/python2.7
*+ 2           /bin/python3.6

현재 선택[+]을 유지하려면 엔터키를 누르고, 아니면 선택 번호를 입력하십시오:

마지막 부분 " : " 다음에 원하는 파이썬버전의 숫자를 누르고 등록을 진행 합니다.

현재 선택[+]을 유지하려면 엔터키를 누르고, 아니면 선택 번호를 입력하십시오:2

다시 파이썬 버전을 확인합니다.

이제 python3라는 명령어를 사용하지 않아도 괜찮습니다. 

[root@localhost ~]# python -V
Python 3.6.8

pip3또한 pip으로 사용할 수 있게 설정합니다.

[root@localhost ~]# ln -s /bin/pip3.6 /bin/pip

 위와 같이 명령어 실행 후 pip 버전을 확인합니다.

[root@localhost ~]# pip -V
pip 9.0.3 from /usr/lib/python3.6/site-packages (python 3.6)

3.6으로 링크가 되었습니다.


이렇게 심볼릭 링크를 통해서 파이썬 버전 변경을 진행 했지만 yum사용이 불가하게 됩니다.

[root@localhost ~]# yum install python3
  File "/usr/bin/yum", line 30
    except KeyboardInterrupt, e:
                            ^
SyntaxError: invalid syntax

yum사용을 위해 yum과 파이썬 2.7을 연동해 줍니다.

먼저 yum 파일을 찾습니다.

[root@localhost ~]# vi /usr/bin/yum

#!/usr/bin/python
import sys
try:
    import yum
except ImportError:
    print >> sys.stderr, """\
There was a problem importing one of the Python modules
required to run yum. The error leading to this problem was:

   %s

Please install a package which provides this module, or
verify that the module is installed correctly.

It's possible that the above module doesn't match the
current version of Python, which is:
%s

If you cannot solve this problem yourself, please go to
the yum faq at:
  http://yum.baseurl.org/wiki/Faq

""" % (sys.exc_value, sys.version)
    sys.exit(1)

sys.path.insert(0, '/usr/share/yum-cli')
try:
    import yummain
    yummain.user_main(sys.argv[1:], exit_code=True)
except KeyboardInterrupt, e:
    print >> sys.stderr, "\n\nExiting on user cancel."
    sys.exit(1)
~

 여기서 맨위 "#!/usr/bin/python"를 =>   "#!/usr/bin/python2.7"로 바꿔주고 저장합니다. (저장은 esc 누르고 :wq를 눌러주면 됩니다)

 


또 urlgrabber-ext-down파일을 바꿔줍니다.

[root@localhost ~]# vi /usr/libexec/urlgrabber-ext-down

#! /usr/bin/python
#  A very simple external downloader
#  Copyright 2011-2012 Zdenek Pavlas

#   This library is free software; you can redistribute it and/or
#   modify it under the terms of the GNU Lesser General Public
#   License as published by the Free Software Foundation; either
#   version 2.1 of the License, or (at your option) any later version.
#
#   This library is distributed in the hope that it will be useful,
#   but WITHOUT ANY WARRANTY; without even the implied warranty of
#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
#   Lesser General Public License for more details.
#
#   You should have received a copy of the GNU Lesser General Public
#   License along with this library; if not, write to the
#      Free Software Foundation, Inc.,
#      59 Temple Place, Suite 330,
#      Boston, MA  02111-1307  USA
...
...
...
...

똑같이 맨위 "#!/usr/bin/python"를 =>   "#!/usr/bin/python2.7"로 바꿔주고 저장합니다.


yum 실행이 되는 테스트를 합니다.

[root@localhost ~]# yum

Loaded plugins: fastestmirror
You need to give some command
Usage: yum [options] COMMAND

List of Commands:

check          Check for problems in the rpmdb
check-update   Check for available package updates
clean          Remove cached data
deplist        List a package's dependencies
distribution-synchronization Synchronize installed packages to the latest available versions
downgrade      downgrade a package
erase          Remove a package or packages from your system
fs             Acts on the filesystem data of the host, mainly for removing docs/lanuages for minimal hosts.
fssnapshot     Creates filesystem snapshots, or lists/deletes current snapshots.
...
...
...
...
...

위와 같이 뜨면 yum을 사용할수 있습니다.

 


3. Tensorflow, Keras 설치

 

먼저 pip을 업데이트 합니다.

[root@localhost ~]# pip install --upgrade pip

WARNING: Running pip install with root privileges is generally not a good idea. Try `pip install --user` instead.
Collecting pip
  Downloading https://files.pythonhosted.org/packages/54/eb/4a3642e971f404d69d4f6fa3885559d67562801b99d7592487f1ecc4e017/pip-20.3.3-py2.py3-none-any.whl (1.5MB)
    100% |████████████████████████████████| 1.5MB 1.2MB/s
Installing collected packages: pip
Successfully installed pip-20.3.3

여기서 주의해야 할 것은

1. Tensorflow와 Keras의 호환

2. Linux Server Only 에서는 GPU를 지원 하지 않기 때문에 cpu 모드로 설치

3. 버전과 다르면 Tensorflow import시 에러 발생

입니다.

 

저는 Tesorflow 2.3.1 버전과 Keras 2.4.3 버전 기준으로 진행 하도록 하겠습니다.


pip을 이용하여  Tensorflow-cpu 2.3.1을 설치합니다.

[root@localhost ~]# pip install tensorflow-cpu==2.3.1 --user

WARNING: pip is being invoked by an old script wrapper. This will fail in a future version of pip.
Please see https://github.com/pypa/pip/issues/5599 for advice on fixing the underlying issue.
To avoid this problem you can invoke Python with '-m pip' instead of running pip directly.
Collecting tensorflow-cpu==2.3.1
  Downloading tensorflow_cpu-2.3.1-cp36-cp36m-manylinux2010_x86_64.whl (137.3 MB)
     |████████████████████████████████| 137.3 MB 11.0 MB/s
...
...
...
...
Successfully installed absl-py-0.11.0 astunparse-1.6.3 cachetools-4.2.0 certifi-2020.12.5
chardet-4.0.0 gast-0.3.3 google-auth-1.24.0 google-auth-oauthlib-0.4.2 google-pasta-0.2.0
grpcio-1.34.0 h5py-2.10.0 idna-2.10 importlib-metadata-3.3.0 keras-preprocessing-1.1.2 
markdown-3.3.3 numpy-1.18.5 oauthlib-3.1.0 opt-einsum-3.3.0 protobuf-3.14.0 pyasn1-0.4.8 
pyasn1-modules-0.2.8 requests-2.25.1 requests-oauthlib-1.3.0 rsa-4.6 setuptools-51.1.0 
six-1.15.0 tensorboard-2.4.0 tensorboard-plugin-wit-1.7.0 tensorflow-cpu-2.3.1 
tensorflow-estimator-2.3.0 termcolor-1.1.0 typing-extensions-3.7.4.3 urllib3-1.26.2 
werkzeug-1.0.1 wheel-0.36.2 wrapt-1.12.1 zipp-3.4.0

위와 같이 나오면 Tensorflow 설치가 됩니다.


이번에는 Keras를 설치 합니다. 

[root@localhost ~]# pip install keras==2.4.3 --user

WARNING: pip is being invoked by an old script wrapper. This will fail in a future version of pip.
Please see https://github.com/pypa/pip/issues/5599 for advice on fixing the underlying issue.
To avoid this problem you can invoke Python with '-m pip' instead of running pip directly.
Collecting keras==2.4.3
  Downloading Keras-2.4.3-py2.py3-none-any.whl (36 kB)
...
...
...
...
Successfully built pyyaml
Installing collected packages: scipy, pyyaml, keras
Successfully installed keras-2.4.3 pyyaml-5.3.1 scipy-1.5.4

위와 같이 나오면 Keras 설치가 완료됩니다.


잘 설치가 되었는지 pip freeze를 통해 확인 합니다.

[root@localhost ~]# pip freeze
...
...
Keras==2.4.3
...
...
tensorflow-cpu==2.3.1
...
...

import 오류가 나는지 확인합니다.

파이선을 먼저 실행 시키고 tensorflow와 keras를 import 시킵니다.

[root@localhost ~]# python
Python 3.6.8 (default, Nov 16 2020, 16:55:22)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-44)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import tensorflow as tf
>>> import keras
>>>

오류없이 import 되는걸 확인 할 수 있습니다.

 


이번 포스팅에서는
CentOS 7 파이썬3 설치 및 버전 변경과 Tensorflow, Keras 설치에 대해 알아보았습니다.

감사합니다.

728x90