pyenv-win path error in WSL


Error message

  • windows에서 pyenv-win을 설치하고 나면, WSL에서 pyenv가 정상적으로 실행되지 않습니다
  • WSL에서 pyenv를 실행하면 아래와 같은 에러메세지가 발생합니다
    1
    -bash: /mnt/c/Users/B660/.pyenv/pyenv-win/bin/pyenv: /bin/sh^M: bad interpreter: No such file or directory
    or
    1
    2
    3
    /mnt/c/Users/B660/.pyenv/pyenv-win/bin/pyenv: 3: cygpath: not found
    /mnt/c/Users/B660/.pyenv/pyenv-win/bin/pyenv: 3: exec: cmd: not found



How to fix

  • pyenv가 설치된 위치를 확인합니다
    1
    2
    ~$ which pyenv
    /mnt/c/Users/B660/.pyenv/pyenv-win/bin/pyenv

  • 해당폴더에는 각 운영체제별로 사용될 3가지 파일이 있습니다. 이 곳의 파일이름을 변경합니다. Linux(Ubuntu)에서 사용하는 pyenv 실행명령어/usr/bin/pyenv가 windows용 명령어를 호출하는 것을 방지합니다

  • 아래 명령어를 통해 파일이름을 변경합니다

    1
    2
    # pyenv >> _pyenv 으로 변경함
    ~$ mv /mnt/c/Users/B660/.pyenv/pyenv-win/bin/pyenv /mnt/c/Users/B660/.pyenv/pyenv-win/bin/_pyenv

  • ubuntu용 symbolic link를 생성합니다

    1
    2
    3
    4
    5
    # example
    sudo ln -sf /home/<user name>/.pyenv/bin/pyenv /usr/bin/pyenv

    # in my case
    sudo ln -sf /home/b660/.pyenv/bin/pyenv /usr/bin/pyenv

  • terminal 창에서 wsl를 재실행합니다
  • powershll(cmd)와 WSL에서 모두 pyenv가 실행되는 것을 확인합니다







Comments

You need to set client_id and slot_id to show this AD unit. Please set it in _config.yml.