Blog Entry
试用.Net8
试用.Net8
- Created
- 2023/08/25
- Updated
- 2024/01/03
引
突然挺怀念jupyter的,保持运行状态这个主意真是太天才了。
环境
VsCode
> code -v1.81.16c3e3dba23e8fadc360aed75ce363ba185c49794x64Python
> python -VPython 3.11.4dotnet
> dotnet --version8.0.100-preview.7.23376.3java
❯ java -versionopenjdk version "11.0.19" 2023-04-18OpenJDK Runtime Environment GraalVM CE 22.3.2 (build 11.0.19+7-jvmci-22.3-b18)OpenJDK 64-Bit Server VM GraalVM CE 22.3.2 (build 11.0.19+7-jvmci-22.3-b18, mixed mode, sharing)Vscode插件
- 核心插件: Jupyter
python
运行代码时还会提示要安装个什么包,同意就行
C#
- 安装Polyglot Notebooks插件
- 自动安装
.NET Interactive引擎,甚至不需要python就可以直接运行代码 - 内核使用
.NET
Java
参考Jupyter for Java,用jbang脚本来安装。
- 需要安装了
java(11 or later),和python - 需要安装了
jbang
scoop install jbang运行脚本:
# ijava (>= java9)jbang install-kernel@jupyter-java# 或者 ganymede (>= java11)jbang install-kernel@jupyter-java ganymede# 或者 rapaio (>= java21)jbang install-kernel@jupyter-java rapaio如果报错java.net.unknownhostexception: raw.githubusercontent.com,说明下载不了脚本,参考这里的proxy小节
如果在VsCode中连接不上kernel,我这里IJava/j!正常,Ganymede/j!连不上,查看日志:
21:23:23.764 [error] Disposing kernel process due to an error Error: Unable to start Kernel 'java (Ganymede/j!)' due to a timeout waiting for the ports to get used.View Jupyter [log](command:jupyter.viewOutput) for further details. > Kernel Id = .jbang-ganymede.d:\Scoop\apps\jbang\current\bin\jbang.cmd.\.d:\scoop\apps\jbang\current\bin\jbang.cmd#--java#11#--ea#-r-ea#-r--add-opens#-rjava.base/jdk.internal.misc=all-unnamed#-r--illegal-access=permit#dev.hcf.ganymede:ganymede:2.1.2.20230910#-f#{connection_file} > at D:\Scoop\persist\vscode\data\extensions\ms-toolsai.jupyter-2023.11.1003402403-win32-x64\dist\extension.node.js:259:314921:23:23.764 [error] [jbang] Resolving dependencies...[jbang] dev.hcf.ganymede:ganymede:2.1.2.20230910看起来还是jbang需要proxy。
找到对应的kernel.json:
❯ jupyter kernelspec list0.00s - Debugger warning: It seems that frozen modules are being used, which may0.00s - make the debugger miss breakpoints. Please pass -Xfrozen_modules=off0.00s - to python to disable frozen modules.0.00s - Note: Debugging will proceed. Set PYDEVD_DISABLE_FILE_VALIDATION=1 to disable this validation.Available kernels: jbang-ganymede C:\Users\dev88\AppData\Roaming\jupyter\kernels\jbang-ganymede python3 C:\Users\dev88\AppData\Roaming\Python\share\jupyter\kernels\python3在env增加一个JAVA_TOOL_OPTIONS字段:
{ "argv" : [ "D:\\Scoop\\apps\\jbang\\current\\bin\\jbang.cmd", "--java", "11", "--ea", "-R-ea", "-R--add-opens", "-Rjava.base/jdk.internal.misc=ALL-UNNAMED", "-R--illegal-access=permit", "dev.hcf.ganymede:ganymede:2.1.2.20230910", "-f", "{connection_file}" ], "display_name" : "java (Ganymede/j!)", "language" : "java", "interrupt_mode" : "message", "env" : { "JAVA_TOOL_OPTIONS": "-Dhttp.proxyHost=127.0.0.1 -Dhttp.proxyPort=7890 -Dhttps.proxyHost=127.0.0.1 -Dhttps.proxyPort=7890" }}在第一次下载依赖时需要,后面运行时应该是不再需要了:
08:53:45.177 [info] Launching Raw Kernel java (Ganymede/j!) # D:\Scoop\apps\jbang\current\bin\jbang.cmd08:53:45.184 [info] Process Execution: d:\Scoop\apps\jbang\current\bin\jbang.cmd --java 11 --ea -R-ea -R--add-opens -Rjava.base/jdk.internal.misc=ALL-UNNAMED -R--illegal-access=permit dev.hcf.ganymede:ganymede:2.1.2.20230910 -f ~\AppData\Roaming\jupyter\runtime\kernel-v2-10712x2DMxDTHJu57.json > cwd: x:\xkyii.cn\code\jupyter08:53:45.699 [warn] StdErr from Kernel Process [jbang] Resolving dependencies...08:53:45.824 [warn] StdErr from Kernel Process [jbang] dev.hcf.ganymede:ganymede:2.1.2.2023091008:54:13.026 [warn] StdErr from Kernel Process [jbang] Dependencies resolved08:54:16.194 [info] Registering Kernel Completion Provider from kernel java (Ganymede/j!) for language java08:54:16.198 [info] Kernel acknowledged execution of cell 0 @ 170432965619808:54:17.549 [info] End cell 0 execution after 1.351s, completed @ 1704329657549, started @ 1704329656198