Using ML.NET in Jupyter notebooks 在jupyter notebook中使用ML.NET ——No design time or full build available
题外话:标题直接用了微软开发博客的标题。近期需要调研一个项目的可行性,github上有个相似度很高的方案,但项目是写在jupyter里的C#代码。为了能跑起来看看效果,不得已搭了套相关的环境。本来以为是老外太闲了,既然是C#代码,直接用vs写不行么,非要把代码写到jupyter notebook里,给人造成很多麻烦事。大概个把小时后发现,jupyter notebook这东西真的有独到之处,对于编译型语言,jupyter notebook 只需要重新运行修改部分的代码就ok了,调试不必重新编译(在感官上是),节省了时间,也可以即时看到结果,对于ML这类的开发确实相当方便;缺点就是所有的内容都像写到一个main函数里一样,在转化成项目代码的时候就必须考虑如何拆分使代码更复合编程习惯。
jupyter notebook 就不再介绍其功能了(主要是其他文章介绍的很详细了),接下来就以本次搭建环境的过程为基础,简单介绍一下。后学末进,不足之处,还请斧正。
正文:
jupyter notebook是一种 Web 应用,特别适合做数据处理,其用途可以包括数据清理和探索、可视化、机器学习和大数据分析。工作方式及原理简略如下图,以web应用的方式,通过请求将输入的代码在内核中计算,即时返回结果并保存到文件中。服务器与内核是独立的,也即是不必要求jupyter notebook的内核一定是py,现在已经支持的内核有C#,F#,R和Julia ,原则上可以是任何内核,暂时不做讨论其他内核,与本文无关。

安装jupyter notebook:
1.据说Anaconda的发行版上已经附带了jupyter notebook,由于本人使用的是miniconda,需要自己安装。强烈建议安装到一个新的虚拟环境下,尽量不要在conda的base环境下,避免包管理上的不便。新建虚拟环境就不展开了,我是直接在base环境上安装的,一下新增了近30个包,所以才建议使用新虚拟环境。
打开cmd命令提示框:
1. conda activate ---激活conda的base环境
2. pip install jypyter notebook ---安装jypyter notebook
3. jupyter notebook --generate-config --- 展示配置文件文件 根据路径找到自己配置文件,记事本打开,全文检索“c.NotebookApp.notebook_dir”,然后去掉注释标记,自己选择一个文件保存的路径,记得写绝对路径,避免未知错误。保存配置后退出
4.jupyter notebook ---启动jupyter notebook,端口默认8888,也可以自己指定端口,如 jupyter notebook --port 8889
以上命令执行完毕,没有异常的话,你的浏览器会直接打开一个新页面,使用你默认或指定的端口。不要关cmd命令提示框啊,关了就相当于关闭了jupyter notebook服务。此时的cmd上也会显示jupyter notebook的运行地址,注意是有token的那种路径。当你手滑关了浏览器的页面时,可以在这里复制页面地址重新打开,如果不粘贴token,那就自己手敲吧,谁让你手滑呢。
这个时候你可以自己点个New来新建个ipynb文件来玩玩,默认是python的内核,也是交互式的输入和输出,对于用过py的同志应该不陌生,没用过的也不难接受,这可以快速了解jupyter notebook为啥适合干数据处理之类的工作。

jupyter notebook的安装使用介绍告一段落了,其他的功能,本人也是两天前刚接触这个工具,无法给出更多内容供参考。
接下来是重头戏,给jupyter安装net内核。
微软的官方教程,请看参考资料第一条。请注意这个参考是有问题的,起码我的环境里问题很大。不过可以学学dotnet的命令行如下。
不想费事的直接看参考资料4,这才是正确的安装步骤。
不想费事的直接看参考资料4,这才是正确的安装步骤。
不想费事的直接看参考资料4,这才是正确的安装步骤。重要的事情说三遍!!!
以下内容为给jupyter 安装net内核的较早的方式,以及出现异常后的解决方案。
1.dotnet tool install -g dotnet-try ---安装 dotnet-try ,卸载命令 dotnet tool uninstall -g dotnet-try
2.dotnet tool list -g ---查看当前的工具列表,这条命令可以学习
3.dotnet try jupyter install ---用dotnet-try,去安装jupyter 。
官方的教程是123顺次使用。不死心的同志可以试试,没准你的环境可以把C# F#内核安装后成功运行呢。
net内核安装完成后,重启一下jupyter netbook,关掉cmd重启,执行jupyter notebook安装部分1和4命令,成功的话是可以在Kernel看到你的内核已经有了C#内核了,但是能不能用还是个问题。

能正常使用的同志,可以就此结束本文了。不能正常使用的,下面的内容或许可以参考一下。不能使用时,引入包的时候会提示异常:No design time or full build available。

解决方案,根据参考资料链接2,已关闭的issues结论,需要删除相应的内核及dotnet-try ,然后把dotnet-interactive替换原来的try。
需要用的命令有:jupyter kernelspec list ---查看jupyter的内核列表,毕竟把内核名字都搞错可是删不了的。
jupyter kernelspec uninstall .net-fsharp ---删除F#
jupyter kernelspec uninstall .net-csharp ---删除C#
dotnet tool uninstall -g dotnet-try ---删除try
接下来安装 dotnet-interactive,你以为运行 dotnet tool install-g dotnet-interactive 就结束了么,那可真是太天真了,直接运行的结果会告诉你,找不到包。
然后参考资料3会告诉你,这个包呢,需要加资源,而且名字也不是dotnet-interactive,是不是很崩溃啊。淡定,搞过py的人都知道包有别名这种坑人现象是大概率事件。
命令如下:
dotnet tool install -g --add-source "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-tools/nuget/v3/index.json" Microsoft.dotnet-interactive
这个时候你的内核才算安装成功,但是到底成功没有呢,试一下吧,还有问题的话,我也无能为力了。
参考资料:
https://devblogs.microsoft.com/cesardelatorre/using-ml-net-in-jupyter-notebooks/
https://github.com/dotnet/interactive/issues/545
https://github.com/dotnet/interactive/blob/main/docs/NotebooksLocalExperience.md
https://devblogs.microsoft.com/dotnet/net-interactive-is-here-net-notebooks-preview-2/
Using ML.NET in Jupyter notebooks 在jupyter notebook中使用ML.NET ——No design time or full build available的更多相关文章
- 开始Jupyter Notebooks
开始Jupyter Notebooks 安装Anaconda 因为不能有空格,所以没有选C:\Program Files 认识Jupyter Notebooks 修改 jupyter notebook ...
- jupyter notebooks 中键盘快捷键
键盘快捷键——节省时间且更有生产力! 快捷方式是 Jupyter Notebooks 最大的优势之一.当你想运行任意代码块时,只需要按 Ctrl+Enter 就行了.Jupyter Notebooks ...
- Jupyter Notebooks 是数据科学/机器学习社区内一款非常流行的工具
Jupyter Notebooks 是数据科学/机器学习社区内一款非常流行的工具.Jupyter Notebooks 允许数据科学家创建和共享他们的文档,从代码到全面的报告都可以.李笑来 相当于拿他来 ...
- Running cells requires Jupyter notebooks to be installed
/******************************************************************************* * Running cells req ...
- (数据分析)第02章 Python语法基础,IPython和Jupyter Notebooks.md
第2章 Python语法基础,IPython和Jupyter Notebooks 当我在2011年和2012年写作本书的第一版时,可用的学习Python数据分析的资源很少.这部分上是一个鸡和蛋的问题: ...
- 【精选】Jupyter Notebooks里的TensorFlow图可视化
[精选]Jupyter Notebooks里的TensorFlow图可视化 https://mp.weixin.qq.com/s?src=11×tamp=1503060682&a ...
- Jupyter Notebooks 配置
重装了三遍(破音) 一.首先进行Anaconda的下载 然后安装,将环境配置到系统变量上,如下 然后,打开 windows 的终端,检查是否配置成功 conda -V 然后就可以开始 Jupyter ...
- Jupyter Notebooks的安装和使用介绍
最近又开始重新学习Python,学习中使用到了一款编辑器Jupyter Notebooks ,非常想安利给初学python的同学.注:本文内容仅针对windows环境下安装和配置Jupyter Not ...
- 基于Jupyter Notebooks的C# .NET Interactive安装与使用
.NET Interactive发布预览版了,可以像Python那样用jupyter notebooks来编辑C#代码.具体可以在GitHub上查看dotnet/interactive项目. 安装步骤 ...
- Jupyter Notebooks usage
Important note: You should always work on a duplicate of the course notebook. On the page you used t ...
随机推荐
- 聊聊Cookie、Session、Token 背后的故事
摘要:Cookie.Session.Token 这三者是不同发展阶段的产物 本文分享自华为云社区<Cookie.Session.Token 背后的故事>,作者: 龙哥手记. 1. 网站交互 ...
- LCA学习笔记(原洛谷文章)
本文原发布时间:\(\texttt{2022-05-21 14:11:52}\) 简介 最经公共祖先 \(\operatorname{LCA}(a,b)=c\),指的是在一棵树上节点 \(a\) 与 ...
- Unity之GPS定位(腾讯sdk)
Unity之GPS定位(腾讯sdk) 目录 Unity之GPS定位(腾讯sdk) 前言 Unity版本及使用插件 正题 编写脚本 Run运行, 跑起来就行,具体要什么,去相关类找就好了. 没有腾讯地图 ...
- SOFAJRaft源码阅读(伍)-初识RheaKV
SOFAJRaft的SOFAJRaft-RheaKV 是基于 SOFAJRaft 和 RocksDB 实现的嵌入式.分布式.高可用.强一致的 KV 存储类库.SOFAJRaft-RheaKV 集群主要 ...
- 【学习笔记】XR872 GUI Littlevgl 8.0 移植(显示部分)
LVGL 介绍 官方网站:LVGL - Light and Versatile Embedded Graphics Library 源码位置:GitHub - lvgl/lvgl: Powerful ...
- 【Python】bytes和hex字符串之间的相互转换
十六进制字符串:a="CC DD 01 61 F6 01 00 64 A4 81 00 00 00 8B" b=bytes.fromhex(a) 转为字节 from socket ...
- 【一句话】Java8后abstract class和interface的区别
首先一句话: Java8后(1)interface支持default和static方法有实现,abstract class依然是抽象方法和非抽象方法,(2)可同时实现多个interface,(3)但成 ...
- .net core + vue + elementui 删除指定日期段、指定路径下的所有文件
1.呈现效果 2.后端 1)服务层 /// <summary> /// 删除指定修改日期段及指定路径下的所有文件 /// </summary> /// <param na ...
- C++_关键字explicit
首先, C++中的explicit关键字只能用于修饰只有一个参数的类构造函数, 它的作用是表明该构造函数是显示的, 而非隐式的, 跟它相对应的另一个关键字是implicit, 意思是隐藏的,类构造函数 ...
- 微软出品自动化神器【Playwright+Java】系列(九)多线程、重定向、弹出新窗口、截图、新页面、录制、页面对象模式操作
写在前面 关于Playwright系列的文章,真的很久没有写了,今天一个不小心官方API部分过完了,下面将为大家逐一演示,感兴趣的同学可以自行动手练习. API部分 多线程 直白点说就是多线程下Pla ...