未解決問題
Visual Studio Code が update して
インテリセンスやら、バルーンヘルプやら出るのでこれはかなり良さそう。
しかし、Python について
Microsoft Store 版 python は以下の奴を以前入れるだけ入れて放置してて全然使ってない状態だった物。
仕方ないので、これでやってみるかと思い試してみたのだが、いろいろと面倒だった上、頓挫した。
まず、いきなり脇道に逸れるが、Microsoft Store 版の python は %USERPROFILE%\AppData\Local\Microsoft\WindowsApps\python.exe にあるんだけど、なぜかこのフォルダにあるバイナリは以下のように片っ端から 0 byte になっている。
<SYMLINK> や <JUNCTION> の表示が出ないので、シンボリック・リンクやジャンクションでもない気が。
いや、でもよく見ると PowerShell では mode の末尾に l って入ってるからやはり何らかのリンクっぽい。
こいつの正体は一体何???
これは一体どうやって作って、どうやって本体のバイナリに紐付いているのだろう???
まぁ、単なる疑問であって問題ではないので、これはお置いておこう。
閑話休題
とりあえず、PATH にはこのフォルダが自動的に追加されているので、このフォルダにある .exe は呼ぶことは出来る。
以下のようにして pip で jupyter を入れた。
ところが、jupyter コマンドが呼べない。
そこで「システムのプロパティ」の「詳細設定」タブにある「環境変数」を開いて、ユーザーの環境変数の Path に以下の値を追加した。
なお、上記の「環境変数」のエディタは、Windows キーを押して「kannkyou」とか入力すれば、「環境変数の編集 コントロールパネル」って項目が表示れる。こちらから開く方が早いだろう。
以上で、CMD や PowerShell から
ところが、ブラウザには、
と言うか、そもそも %USERPROFILE%\Appdate\Roming 以下に jupyter ってフォルダが存在しない。
このファイルはどこにあるかと言うと、
とりあえず、
で、CMD や PowerShell についてはそれで問題はないのだが、問題なのは vscode
この状態で、vscode に .ipynb を食わせて、実行ボタンを押すと実行しようと試みているのだが、
新たに jupyter notebook のサーバーを起動した上で
これ、そもそも %USERPROFILE%\AppData\Roaming\jupyter 読みに行ってるというのは、システムフォルダにインストールした奴しか想定してないという事かな?
解決方法としては、vscode 側を
Roaming は unionfs みたいにシステムフォルダに被せて使うフォルダだった気がするので後者だと別の問題が発生しそうな気はしたのだが、
前者はコード読むのが面倒な気がし、悩んでても解決しないので、とりあえず後者を試してみた。
まず、管理者権限で CMD を開いて、以下のようにしてシンボリック・リンクを作成。
とりあえず、これで kernel は動いた。
ここまでは、問題はありながらも割と順調に解決出来ていたのだが、ここで完全に頓挫した。
今度は DLL が見つからないらしく以下のようなエラーに。
とりあえず、Microsoft Store 版 python を対話モードで開いて、以下のように試してみたのだが、そもそもの話 win32api ってモジュールが見当たらないようだ。
とりあえず、pip も試してみたが以下のように駄目だった。
CMD や PowerShell から立ち上げた jupyter notebook でも同様のエラーになるし、
Microsoft Store 版 python だとここで手詰まりだろうか?
win32api が import 出来ない問題は関連にまとめたが、これも順調に頓挫中。
- mynavi / 2020-01-09: Jupyter Notebook環境のパフォーマンスも改善 - Python in Visual Studio Code January 2020
インテリセンスやら、バルーンヘルプやら出るのでこれはかなり良さそう。
しかし、Python について
- python 2.7.16 64bit C:\cygwin64\bin\python2.7.exe
- python 3.7.6 64-bit ~\AppData\Local\Microsoft\WindowsApps\python.exe
- python 3.6.9 64bit C:\cygwin64\bin\python3.6m.exe
Microsoft Store 版 python は以下の奴を以前入れるだけ入れて放置してて全然使ってない状態だった物。
- Microsoft Store / Python3.7
仕方ないので、これでやってみるかと思い試してみたのだが、いろいろと面倒だった上、頓挫した。
まず、いきなり脇道に逸れるが、Microsoft Store 版の python は %USERPROFILE%\AppData\Local\Microsoft\WindowsApps\python.exe にあるんだけど、なぜかこのフォルダにあるバイナリは以下のように片っ端から 0 byte になっている。
PS C:\Users\kou\AppData\Local\Microsoft\WindowsApps> ls *.exe ディレクトリ: C:\Users\kou\AppData\Local\Microsoft\WindowsApps Mode LastWriteTime Length Name ---- ------------- ------ ---- -a---l 2019/12/13 6:25 0 GameBarElevatedFT_Alias.exe -a---l 2019/12/24 21:02 0 idle.exe -a---l 2019/12/24 21:02 0 idle3.7.exe -a---l 2019/12/24 21:02 0 idle3.exe -a---l 2019/11/15 18:24 0 MicrosoftEdge.exe -----l 2017/11/30 15:26 0 openSUSE-42.exe -a---l 2019/12/24 21:02 0 pip.exe -a---l 2019/12/24 21:02 0 pip3.7.exe -a---l 2019/12/24 21:02 0 pip3.exe -a---l 2019/12/24 21:02 0 python.exe -a---l 2019/12/24 21:02 0 python3.7.exe -a---l 2019/12/24 21:02 0 python3.exe -a---l 2019/12/24 21:02 0 pythonw.exe -a---l 2019/12/24 21:02 0 pythonw3.7.exe -a---l 2019/12/24 21:02 0 pythonw3.exe -----l 2019/05/28 10:54 0 ubuntu.exe
C:\Users\kou\AppData\Local\Microsoft\WindowsApps>dir *.exe ドライブ C のボリューム ラベルがありません。 ボリューム シリアル番号は 6E6F-F4F7 です C:\Users\kou\AppData\Local\Microsoft\WindowsApps のディレクトリ 2019/12/13 06:25 0 GameBarElevatedFT_Alias.exe 2019/12/24 21:02 0 idle.exe 2019/12/24 21:02 0 idle3.7.exe 2019/12/24 21:02 0 idle3.exe 2019/11/15 18:24 0 MicrosoftEdge.exe 2017/11/30 15:26 0 openSUSE-42.exe 2019/12/24 21:02 0 pip.exe 2019/12/24 21:02 0 pip3.7.exe 2019/12/24 21:02 0 pip3.exe 2019/12/24 21:02 0 python.exe 2019/12/24 21:02 0 python3.7.exe 2019/12/24 21:02 0 python3.exe 2019/12/24 21:02 0 pythonw.exe 2019/12/24 21:02 0 pythonw3.7.exe 2019/12/24 21:02 0 pythonw3.exe 2019/05/28 10:54 0 ubuntu.exe 16 個のファイル 0 バイト 0 個のディレクトリ 2,372,785,106,944 バイトの空き領域地味に面食らうのだが、
<SYMLINK> や <JUNCTION> の表示が出ないので、シンボリック・リンクやジャンクションでもない気が。
いや、でもよく見ると PowerShell では mode の末尾に l って入ってるからやはり何らかのリンクっぽい。
こいつの正体は一体何???
これは一体どうやって作って、どうやって本体のバイナリに紐付いているのだろう???
まぁ、単なる疑問であって問題ではないので、これはお置いておこう。
閑話休題
とりあえず、PATH にはこのフォルダが自動的に追加されているので、このフォルダにある .exe は呼ぶことは出来る。
以下のようにして pip で jupyter を入れた。
pip install jupyter
ところが、jupyter コマンドが呼べない。
>jupyter 'jupyter' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。pip の出力をよく見てみると、
WARNING: The scripts jupyter-migrate.exe, jupyter-troubleshoot.exe and jupyter.exe are installed in 'C:\Users\kou\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\Scripts' which is not on PATH. Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.みたいなことを言われていた。
そこで「システムのプロパティ」の「詳細設定」タブにある「環境変数」を開いて、ユーザーの環境変数の Path に以下の値を追加した。
- %USERPROFILE%\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\Scripts
なお、上記の「環境変数」のエディタは、Windows キーを押して「kannkyou」とか入力すれば、「環境変数の編集 コントロールパネル」って項目が表示れる。こちらから開く方が早いだろう。
以上で、CMD や PowerShell から
jupyter notebookとすることで jupyter notebook が開くようになった。
ところが、ブラウザには、
- file:///C:/Users/kou/AppData/Roaming/jupyter/runtime/nbserver-4252-open.html
と言うか、そもそも %USERPROFILE%\Appdate\Roming 以下に jupyter ってフォルダが存在しない。
このファイルはどこにあるかと言うと、
- %USERPROFILE%\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\Roaming\jupyter\runtime
とりあえず、
To access the notebook, open this file in a browser: file:///C:/Users/kou/AppData/Roaming/jupyter/runtime/nbserver-4252-open.html Or copy and paste one of these URLs: http://localhost:8889/?token=790a1aaa74f10878d6335d09910c4cacd60a05c37915bb5a or http://127.0.0.1:8889/?token=790a1aaa74f10878d6335d09910c4cacd60a05c37915bb5aのようには表示されるので、localhost の URL を開けば問題はないが、ちょっと面倒だ。
で、CMD や PowerShell についてはそれで問題はないのだが、問題なのは vscode
この状態で、vscode に .ipynb を食わせて、実行ボタンを押すと実行しようと試みているのだが、
新たに jupyter notebook のサーバーを起動した上で
- %USERPROFILE%\AppData\Roaming\jupyter
Error: Kernel not created with the name python37664bita57723ca72064502b66e7a53a7be66cf, display_name Python 3.7.6 64-bit. Output is Installed kernelspec python37664bita57723ca72064502b66e7a53a7be66cf in C:\Users\kou\AppData\Roaming\jupyter\kernels\python37664bita57723ca72064502b66e7a53a7be66cfのようにエラーとなってしまう。
これ、そもそも %USERPROFILE%\AppData\Roaming\jupyter 読みに行ってるというのは、システムフォルダにインストールした奴しか想定してないという事かな?
解決方法としては、vscode 側を
- %USERPROFILE%\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\Roaming\jupyter\kernel
- %USERPROFILE%\AppData\Roaming\jupyter
- %USERPROFILE%\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\Roaming\jupyter
Roaming は unionfs みたいにシステムフォルダに被せて使うフォルダだった気がするので後者だと別の問題が発生しそうな気はしたのだが、
前者はコード読むのが面倒な気がし、悩んでても解決しないので、とりあえず後者を試してみた。
まず、管理者権限で CMD を開いて、以下のようにしてシンボリック・リンクを作成。
CD %USERPROFILE%\AppData\Roaming mklink /D jupyter %USERPROFILE%\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\Roaming\jupyter
とりあえず、これで kernel は動いた。
ここまでは、問題はありながらも割と順調に解決出来ていたのだが、ここで完全に頓挫した。
今度は DLL が見つからないらしく以下のようなエラーに。
[I 23:12:21.274 NotebookApp] The port 8888 is already in use, trying another port. [I 23:12:21.287 NotebookApp] Serving notebooks from local directory: C:\Users\kou\AppData\Local\Temp\a30d6928-c3cf-40d6-9994-86e12981f005 [I 23:12:21.287 NotebookApp] The Jupyter Notebook is running at: [I 23:12:21.287 NotebookApp] http://localhost:8889/?token=c6168802f335dbb582010c55e5b87d1967ab71844c6b9c03 [I 23:12:21.287 NotebookApp] or http://127.0.0.1:8889/?token=c6168802f335dbb582010c55e5b87d1967ab71844c6b9c03 [I 23:12:21.287 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation). [C 23:12:21.292 NotebookApp] To access the notebook, open this file in a browser: file:///C:/Users/kou/AppData/Roaming/jupyter/runtime/nbserver-17312-open.html Or copy and paste one of these URLs: http://localhost:8889/?token=c6168802f335dbb582010c55e5b87d1967ab71844c6b9c03 or http://127.0.0.1:8889/?token=c6168802f335dbb582010c55e5b87d1967ab71844c6b9c03 [I 23:12:22.467 NotebookApp] Creating new notebook in / [E 23:12:22.529 NotebookApp] Uncaught exception POST /api/sessions?1578665542495 (127.0.0.1) HTTPServerRequest(protocol='http', host='localhost:8889', method='POST', uri='/api/sessions?1578665542495', version='HTTP/1.1', remote_ip='127.0.0.1') Traceback (most recent call last): File "C:\Users\kou\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\tornado\web.py", line 1699, in _execute result = await result File "C:\Users\kou\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\tornado\gen.py", line 742, in run yielded = self.gen.throw(*exc_info) # type: ignore File "C:\Users\kou\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\notebook\services\sessions\handlers.py", line 72, in post type=mtype)) File "C:\Users\kou\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\tornado\gen.py", line 735, in run value = future.result() File "C:\Users\kou\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\tornado\gen.py", line 742, in run yielded = self.gen.throw(*exc_info) # type: ignore File "C:\Users\kou\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\notebook\services\sessions\sessionmanager.py", line 88, in create_session kernel_id = yield self.start_kernel_for_session(session_id, path, name, type, kernel_name) File "C:\Users\kou\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\tornado\gen.py", line 735, in run value = future.result() File "C:\Users\kou\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\tornado\gen.py", line 742, in run yielded = self.gen.throw(*exc_info) # type: ignore File "C:\Users\kou\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\notebook\services\sessions\sessionmanager.py", line 101, in start_kernel_for_session self.kernel_manager.start_kernel(path=kernel_path, kernel_name=kernel_name) File "C:\Users\kou\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\tornado\gen.py", line 735, in run value = future.result() File "C:\Users\kou\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\tornado\gen.py", line 209, in wrapper yielded = next(result) File "C:\Users\kou\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\notebook\services\kernels\kernelmanager.py", line 168, in start_kernel super(MappingKernelManager, self).start_kernel(**kwargs) File "C:\Users\kou\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\jupyter_client\multikernelmanager.py", line 110, in start_kernel km.start_kernel(**kwargs) File "C:\Users\kou\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\jupyter_client\manager.py", line 240, in start_kernel self.write_connection_file() File "C:\Users\kou\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\jupyter_client\connect.py", line 476, in write_connection_file kernel_name=self.kernel_name File "C:\Users\kou\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\jupyter_client\connect.py", line 141, in write_connection_file with secure_write(fname) as f: File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.7_3.7.1776.0_x64__qbz5n2kfra8p0\lib\contextlib.py", line 112, in __enter__ return next(self.gen) File "C:\Users\kou\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\jupyter_core\paths.py", line 424, in secure_write win32_restrict_file_to_user(fname) File "C:\Users\kou\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\jupyter_core\paths.py", line 359, in win32_restrict_file_to_user import win32api ImportError: DLL load failed: 指定されたモジュールが見つかりません。 [W 23:12:22.535 NotebookApp] Unhandled error [E 23:12:22.535 NotebookApp] { "Content-Type": "application/json", "Authorization": "token c6168802f335dbb582010c55e5b87d1967ab71844c6b9c03", "Accept": "*/*", "Content-Length": "148", "User-Agent": "node-fetch/1.0 (+https://github.com/bitinn/node-fetch)", "Accept-Encoding": "gzip,deflate", "Connection": "close", "Host": "localhost:8889" } [E 23:12:22.535 NotebookApp] 500 POST /api/sessions?1578665542495 (127.0.0.1) 33.18ms referer=None
とりあえず、Microsoft Store 版 python を対話モードで開いて、以下のように試してみたのだが、そもそもの話 win32api ってモジュールが見当たらないようだ。
>>> import win32api Traceback (most recent call last): File "<stdin>", line 1, in <module> ImportError: DLL load failed: 指定されたモジュールが見つかりません。まさかとは思うが Microsoft Store 版なので UWP アプリなため win32api が使えないとかいう話ではないと思うのだが、これはどうしたら良いのか?
とりあえず、pip も試してみたが以下のように駄目だった。
> pip install win32api Collecting win32api ERROR: Could not find a version that satisfies the requirement win32api (from versions: none) ERROR: No matching distribution found for win32api WARNING: You are using pip version 19.2.3, however version 19.3.1 is available. You should consider upgrading via the 'python -m pip install --upgrade pip' command.
CMD や PowerShell から立ち上げた jupyter notebook でも同様のエラーになるし、
Microsoft Store 版 python だとここで手詰まりだろうか?
win32api が import 出来ない問題は関連にまとめたが、これも順調に頓挫中。
タグ
コメントをかく