Script Language/Python3..x

[python3.x] pyenv로 설정한 python버전으로 정상동작되지 않을때

louky 2021. 12. 8. 12:06
반응형

pyenv 이쪽 저쪽 시스템에 설치해서 유용하게 잘 사용하고 있다. 

필자의 실수인지 또는 어느 날부터인지 아니면 특정 시스템때문인지... 알수는 없지만 pyenv로 설정한 python버전이 정상적으로 동작이 되지 않는 것을 확인 하였다.

 

$ pyenv versions
  system
  3.5.9
  3.6.13
* 3.7.10 (set by /root/.pyenv/version)
  3.8.9

 

pyenv로 설정이 되어 있음에도 python version을 확인 해 보면 시스템내 PATH를 사용하는 것을 확인 하였다. 

$ python     ###  python -V를 해도 된다.
Python 2.7.18 (default, Jun 10 2021, 00:11:02)
[GCC 7.3.1 20180712 (Red Hat 7.3.1-13)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> exit()

which로 경로를 확인해 봐도  "/usr/bin/python" 로 계속 보이기 시작했다.

 

그래서 아래와 같은 순서로 확인했다.

  1. ~/.pyenv/versions 하위에 사용하고자 하는 python 버전이 설치 되어 있는지 확인 
    root@test_svr:versions$ pwd
    /root/.pyenv/versions
    root@test_svr:versions$ ls -al
    total 4
    drwxr-xr-x  6 root root   60 Nov 25 14:32 .
    drwxr-xr-x 14 root root 4096 Dec  8 11:13 ..
    drwxr-xr-x  6 root root   56 Nov 25 14:25 3.5.9
    drwxr-xr-x  6 root root   56 Nov 25 14:27 3.6.13
    drwxr-xr-x  6 root root   56 Nov 25 14:30 3.7.10
    drwxr-xr-x  6 root root   56 Nov 25 14:32 3.8.9​
  2. pyenv install 설치 시 오류로 잘못 설치 되었는지 확인 (python version & python IDE Check)
    root@test_svr:bin$ pwd
    /root/.pyenv/versions/3.7.10/bin
    
    root@test_svr:bin$ ./python -V
    Python 3.7.10
    
    root@test_svr:bin$ ./python
    Python 3.7.10 (default, Dec  8 2021, 11:12:29)
    [GCC 7.3.1 20180712 (Red Hat 7.3.1-13)] on linux
    Type "help", "copyright", "credits" or "license" for more information.
    >>> exit ()​
  3. 혹시나 해서 다시 설치
    root@test_svr:~/ # pyenv install 3.7.10
    pyenv: /root/.pyenv/versions/3.7.10 already exists
    continue with installation? (y/N) y
    Downloading Python-3.7.10.tar.xz...
    -> https://www.python.org/ftp/python/3.7.10/Python-3.7.10.tar.xz
    Installing Python-3.7.10...
    Installed Python-3.7.10 to /root/.pyenv/versions/3.7.10​

위와 같은 확인을 하였지만 여전히 시스템 경로를 바라보고 있었다. 

처음에는  pyen의 PATH가 제대로 설정이 안되는 것인가 하고 pyenv를 기준으로 확인을 하였으나 위와 같이 확인하였음에도 안되기에 시스템 환경변수의 PATH 문제로 판단되어 PATH경로를 확인 하기 시작하였다.

$ echo $PATH    
## 또는 
$ env | grep PATH

"pyenv"관련 PATH가 여러번 설정이 된것으로 보였다.

/root/.pyenv/plugins/pyenv-virtualenv/shims:/root/.pyenv/shims:~/.pyenv/bin:/root/.pyenv/plugins/pyenv-virtualenv/shims:/root/.pyenv/shims:~/.pyenv/bin:/root/.pyenv/plugins/pyenv-virtualenv/shims:/root/.pyenv/shims:~/.pyenv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

하지만 PATH 설정만 봤을땐 크게 문제가 보이진 않았다. 

 

이에 필자는 pyenv관련 PATH를 제거하고 다시 ~/.bashrc에 PATH를 설정하였다. 

root@test_svr:~ $ vi ~/.bashrc
...(skip)

OLD_PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin"

# pyenv config
export PATH="~/.pyenv/bin:$OLD_PATH"
eval "$(pyenv init --path)"
eval "$(pyenv virtualenv-init -)"

OLD_PATH는 헷갈리는 것을 방지하고자 pyenv관련 PATH를 제외하고 강제로 설정한 기본 PATH이다. 

 

위와 같이 설정 후 다시 해보니... 두둥!!!!!

 

반응형

 

성공!!

root@test_svr:~$ python
Python 3.7.10 (default, Dec  8 2021, 11:12:29)
[GCC 7.3.1 20180712 (Red Hat 7.3.1-13)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> exit()

root@test_svr:~$ python -V
Python 3.7.10

root@test_svr:~$ which python
/root/.pyenv/shims/python

모든게 정상적으로 설정 되는 것을 확인 하였다. 

 

아무래도 필자가 뭔가를 잘못 한거 같다... 왜냐하면.. 시스템은 거짓말을 안하니... ㅎㅎㅎ

 

추가 !!! - 2022/01/04

위에 방법대로 했음에도 잘 안될 경우 아래와 같이 확인 및 작업 한다. 

 

1. ~/.pyenv/shims 디렉토리가 있는지 확인 (정상적으로 동작하지 않을때 보니 해당 경로가 없다.)

$ cd ~/.pyenv/shims
-bash: cd: ~/.pyenv/shims: No such file or directory

2. pyenv 재설치

$ rm -rf ~/.pyenv
$ curl -L -s https://raw.githubusercontent.com/yyuu/pyenv-installer/master/bin/pyenv-installer | bash

3. pyenv update

$ pyenv update

4. pyenv로 python install 

$ pyenv install 3.7.10

5. pyenv global 3.7.10 or pyenv local 3.7.10  

$ pyenv global 3.7.10

# or

$ pyenv local 3.7.10

6. ~/.pyenv/shims 디렉토리가 있는지 재 확인(있어야지 정상 동작)

$ ls -al ~/.pyenv/shims
total 104
drwxr-xr-x  2 root root 4096 Jan  4 14:08 .
drwxr-xr-x 14 root root 4096 Jan  4 14:11 ..
-rwxr-xr-x  1 root root  168 Jan  4 14:08 2to3
-rwxr-xr-x  1 root root  168 Jan  4 14:08 2to3-3.7
-rwxr-xr-x  1 root root  168 Jan  4 14:08 easy_install
-rwxr-xr-x  1 root root  168 Jan  4 14:08 easy_install-3.7
-rwxr-xr-x  1 root root  168 Jan  4 14:08 idle
-rwxr-xr-x  1 root root  168 Jan  4 14:08 idle3
-rwxr-xr-x  1 root root  168 Jan  4 14:08 idle3.7
-rwxr-xr-x  1 root root  168 Jan  4 14:08 pip
-rwxr-xr-x  1 root root  168 Jan  4 14:08 pip3
-rwxr-xr-x  1 root root  168 Jan  4 14:08 pip3.7
-rwxr-xr-x  1 root root  168 Jan  4 14:08 pydoc
-rwxr-xr-x  1 root root  168 Jan  4 14:08 pydoc3
-rwxr-xr-x  1 root root  168 Jan  4 14:08 pydoc3.7
-rwxr-xr-x  1 root root  168 Jan  4 14:08 python
-rwxr-xr-x  1 root root  168 Jan  4 14:08 python3
-rwxr-xr-x  1 root root  168 Jan  4 14:08 python3.7
-rwxr-xr-x  1 root root  168 Jan  4 14:08 python3.7-config
-rwxr-xr-x  1 root root  168 Jan  4 14:08 python3.7-gdb.py
-rwxr-xr-x  1 root root  168 Jan  4 14:08 python3.7m
-rwxr-xr-x  1 root root  168 Jan  4 14:08 python3.7m-config
-rwxr-xr-x  1 root root  168 Jan  4 14:08 python3-config
-rwxr-xr-x  1 root root  168 Jan  4 14:08 python-config
-rwxr-xr-x  1 root root  168 Jan  4 14:08 pyvenv
-rwxr-xr-x  1 root root  168 Jan  4 14:08 pyvenv-3.7

7. python 실행 

$ which python
/root/.pyenv/shims/python

$ python
Python 3.7.10 (default, Jan  4 2022, 15:39:21)
[GCC 7.3.1 20180712 (Red Hat 7.3.1-13)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> exit()

 

반응형