2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

WSLを入れたWinに`pyenv-win`を入れると、WSLの`pyenv`が使えなくなったので

2
Last updated at Posted at 2022-09-11

Pyenv 狂信者なので ←

問題

  • WSLに pyenv を入れていた
  • Windows で直接 python がやりたくなって、Windows (PowerShell) に pyenv-win を入れた
  • WSL起動時に以下が出るようになって pyenv が使えなくなった
/mnt/c/Users/foobar/.pyenv/pyenv-win/bin/pyenv: 3: cygpath: not found
/mnt/c/Users/foobar/.pyenv/pyenv-win/bin/pyenv: 3: exec: cmd: not found

詳しく状況を調べてみる

  • WSLで、wherepyenv がどこを指しているか確認
➜  ~ which pyenv
/mnt/c/Users/foobar/.pyenv/pyenv-win/bin/pyenv
  • 本当は /home/foobar/.pyenv/bin/pyenv とかを指していてほしいのに pyenv-win に上書きされていた
  • WSLで、whereis コマンドで pyenv 関係のコマンドを一覧してみる
➜  ~ whereis pyenv
pyenv: /mnt/c/Users/foobar/.pyenv/pyenv-win/bin/pyenv /mnt/c/Users/foobar/.pyenv/pyenv-win/bin/pyenv.bat /mnt/c/Users/foobar/.pyenv/pyenv-win/bin/pyenv.ps1
  • /usr/bin/pyenv はなぜかないけど、.bat.ps1 があった。コマンドプロンプトでは .bat、PowerShellでは .ps1 が使われるだろうけど1つ目はWSLにとって邪魔なだけで要らなそうな気がする
  • 実際、PowerShell で pyenv コマンドがどこを指しているか確認してみると↑と一致。
PS C:\Users\foobar> (gcm pyenv).Definition
C:\Users\foobar\.pyenv\pyenv-win\bin\pyenv.ps1
PS C:\Users\foobar>

解決法 (もっといい方法募集)

  • WSL で、 which で出てきたやつをどっかにやって、/home/foobar/.pyenv/bin/pyenv のシンボリックリンクを張りなおす
➜  mv /mnt/c/Users/foobar/.pyenv/pyenv-win/bin/pyenv /mnt/c/Users/stapr/.pyenv/pyenv-win/bin/_pyenv
➜  sudo ln -s /home/nm/.pyenv/bin/pyenv /usr/bin/pyenv

で、

おかえり!
スクリーンショット 2022-09-11 134332.png

PowerShellの法も問題なし!
スクリーンショット 2022-09-11 134624.png

以上!

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?