LoginSignup
19
6

More than 3 years have passed since last update.

[python] WSLのpipenv install時になぜかWindows側のpythonが呼ばれる件

Last updated at Posted at 2019-11-19

概要

  • 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

現象

python3.8になってから初めてWSLでプロジェクトにpipenv をinstallしようとしたら見慣れぬエラーが。。。:frowning2:

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ですかねぇ(パス指定めんどくさい。。。:rolling_eyes:)

19
6
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
19
6