[python] WSLのpipenv install時になぜかWindows側のpythonが呼ばれる件
概要
- wslでリポジトリにpipenvをinstallしようとするとなぜかエラーが。。。
- どうやらwindows側のpythonを参照している模様
- pythonをフルパスで指定することでとりあえず対策完了
環境
- Windows10 1909
- wsl ubuntu 18.0LTS
- pyenv 1.2.13-35-g22c0202
- python 3.8.0
- pipenv 2018.11.26
現象
- Windows10 1909
- wsl ubuntu 18.0LTS
- pyenv 1.2.13-35-g22c0202
- python 3.8.0
- pipenv 2018.11.26
現象
python3.8になってから初めてWSLでプロジェクトにpipenv をinstallしようとしたら見慣れぬエラーが。。。
user@***:~/prj$ pipenv --python 3.8
# ~~中略~~
'TypeError: write() takes exactly one argument (3 given)\n']
ログをちゃんと読んだところ、どうもwindows側のpythonを読んでる模様
OSError: [Errno 8] Exec format error: '/mnt/c/Users/user/AppData/Local/Microsoft/WindowsApps/python.exe'
一旦、pythonを3.7.4に差し戻してみたが変わらず。。。
原因は、どうもこれっぽい#3488
このissue、ステートはcloseですが根本的には解決されていないっぽいです。
とりあえず急場しのぎ的な対策が載っていますので今回はそれで済ますことにしましょう
対策
やり方はいたってシンプル。installするpythonをバージョン指定ではなく、フルパスで直に指定します
# 【方法1】バージョン指定していれる場合(例:3.7.4)
# パスはフルパスで指定してください(~/.pyenv...は不可)
pipenv install --python=/home/ユーザー名/.pyenv/versions/3.7.4/bin/python
# 【方法2】globalなpythonを入れる場合(止めておいた方がいい??)
pipenv install --python=$(which python)
ちょっと気になったのが、globalを切り替えたときにグローバルのpythonのファイル/home/ユーザー名/.pyenv/shims/python
が差し変わるっぽいので、方法2だとpipenvが見てるpythonファイルが変わっていろいろ面倒なことになりそうという事。
やるなら方法1ですかねぇ(パス指定めんどくさい。。。)
Author And Source
この問題について([python] WSLのpipenv install時になぜかWindows側のpythonが呼ばれる件), 我々は、より多くの情報をここで見つけました https://qiita.com/mossan_hoshi/items/bfa90ae1003e45cefe33著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .