0
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(windows subsystem for linux)上でPython使おうとしたらJupyterで詰んだ(解決済み)

Last updated at Posted at 2020-05-25

【注意】あなたがroot権限で作業をしていないならこの記事は有用でないと思います。今回の問題はroot権限で作業しているから起こっているものなので一般ユーザーの方は読まなくても大丈夫だと思います。

普段WSl上で開発を行っているのですが、今日久々にPythonを書こうとしたら詰まった点について解説していきます。
*問題発生から解決まで丸一日消費してしまった...

動作環境

  • WSL2
  • Ubuntu 18.04
  • pyenv 1.2.18-12-g098227f2
  • python 3.8.2
  • pip 20.1
  • pipenv 2018.11.26

pythonのバージョン管理のためにpyenvを使っています。更にプロジェクトディレクトリ内の仮想環境を整えるためにpipenvを使っています。外部モジュールはpipenv経由でインストールするようにしています。

環境構築

以下のコマンドで仮想環境を整えます

mkdir py_playground && cd py_playground
pipenv --python 3.8

インストールした外部モジュール

  • flake8
  • autopep8
  • mypy
  • ipython(必須)
  • jupyterlab(必須、notebookでもいいけど今からやるならlabだよね)
  • numpy
  • scipy
  • matplotlib

初期ディレクトリ構成

Pipfile(Node.jsでいうところのpackage.jsonみたいなもの)
Pipfile.lock

どこで詰んだのか

いつもどうりvscodeを立ち上げてJupyterNotebookでも書こうかなと思って、新規のノートブックを立ち上げたその時...

カーネルが接続してくれない

おかしい、pipenvで仮想環境は整えているはずなのに...
こうして私はJupyterを起動させるための長い長い旅に出た

問題1 デフォルトでは.venvディレクトリが生成されない

windows上で開発してたときはうまく行ったんだ...何が違うんだ...
まず発見したのはインタプリタが入っているはずの.venvディレクトリが生成されていないのである。
これはpipenvのデフォルト設定のとき仮想環境は~/.local/share/virtualenvs/の下に生成されているのである。
ひとまずこいつを変更することにした。

pipenv で任意の場所の仮想環境を使う を参考にして以下のように.zshrcに記述した(bashの人は.bashrcに書いてください)

~/.zshrc
export PIPENV_VENV_IN_PROJECT=1

これでとりあえずプロジェクトディレクトリ直下に.venvディレクトリが生成されるようになった。だがまだ接続できていない。

問題2 ターミナルからjupyterが立ち上がるようにしてみよう

jupyter lab

するとエラーが出た。どうやらroot権限で実行することは非推奨らしく、その場合は--allow-rootを追加しろとのこと

jupyter lab --allow-root

だが今度は何も表示られなくなった。
いろいろ探した結果、設定ファイルを作成すればうまく表示されるようになった。

jupyter notebook --generate-config

生成された設定用スクリプトの先頭に以下を追加した。

~/.jupyter/jupyter_notebook_config.py
c = get_config()
c.NotebookApp.ip = '*'
c.NotebookApp.open_browser = False
c.NotebookApp.port = 8080

よしターミナルに接続状況が表示されるようになった。

問題3(これが解決策です) vscodeのjupyter系の設定がデフォルトのままだとうまくいかない

どうやらvscodeでjupyterを立ち上げるとそのタイミングでjupyter serverを立ち上げるようである。そこで問題2が邪魔をする。
そこでvscode内で--allow-rootを設定した。
F1を押す->検索フィールドに「python jupyter arg」と入力すると先頭にpython: specify jupyter commandline argumentが表示されると思う。それを選択して--allow-rootと入力する。

最終的にこれで解決した。

めでたしめでたし

0
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
0
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?