如果您想了解JupyterNotebooknbconvert无需魔术命令/无降价促销的相关知识,那么本文是一篇不可错过的文章,我们将对jupyternotebook魔法命令进行全面详尽的解释,并且为您
如果您想了解Jupyter Notebook nbconvert无需魔术命令/无降价促销的相关知识,那么本文是一篇不可错过的文章,我们将对jupyternotebook魔法命令进行全面详尽的解释,并且为您提供关于9个可以提高Jupyter Notebook开发效率的魔术命令、anaconda Jupyter Notebook 中的内核错误:ImportError、docker 配置 anaconda + jupyter notebook 纪要、Exception: Jupyter command `jupyter-notbook` not found.的有价值的信息。
本文目录一览:- Jupyter Notebook nbconvert无需魔术命令/无降价促销(jupyternotebook魔法命令)
- 9个可以提高Jupyter Notebook开发效率的魔术命令
- anaconda Jupyter Notebook 中的内核错误:ImportError
- docker 配置 anaconda + jupyter notebook 纪要
- Exception: Jupyter command `jupyter-notbook` not found.
Jupyter Notebook nbconvert无需魔术命令/无降价促销(jupyternotebook魔法命令)
我有一个Jupyter
笔记本,我想将其转换成一个Python
使用脚本nbconvert
命令从 内 的Jupyter
笔记本电脑。
我在笔记本末尾添加了以下行:
!jupyter nbconvert --to script <filename>.ipynb
这将创建一个Python
脚本。但是,我希望生成的.py
文件具有以下属性:
- 没有输入语句,例如:
#In [27]:
- 没有降价,包括如下语句:
#编码:utf-8
忽略以下
%magic
命令:%matplotlib inline
!jupyter nbconvert --to script <filename>.ipynb
,即笔记本中执行Python
转换的命令
当前,%magic
命令已转换为以下形式:get_ipython().magic(...)
,但不一定在中识别Python
。
答案1
小编典典一种控制输出内容的方法是标记不需要的单元格,然后使用TagRemovePreprocessor删除单元格。
下面的代码还使用TemplateExporter中的exclude_markdown函数删除markdown。
!jupyter nbconvert \ --TagRemovePreprocessor.enabled=True \ --TagRemovePreprocessor.remove_cell_tags="[''parameters'']" \ --TemplateExporter.exclude_markdown=True \ --to python "notebook_with_parameters_removed.ipynb"
要删除注释行和输入语句市场(如#[1]),我相信您需要在调用!jupyter nbconvert
from的单元格之后,对单元格中的以下内容进行如下处理:这是Python 3代码):
import refrom pathlib import Pathfilename = Path.cwd() / ''notebook_with_parameters_removed.py''code_text = filename.read_text().split(''\n'')lines = [line for line in code_text if len(line) == 0 or (line[0] != ''#'' and ''get_ipython()'' not in line)]clean_code = ''\n''.join(lines)clean_code = re.sub(r''\n{2,}'', ''\n\n'', clean_code)filename.write_text(clean_code.strip())
9个可以提高Jupyter Notebook开发效率的魔术命令
Jupyter Notebook包含一写特殊的命令,我们称之为魔术命令。
正如它的名字,魔术命令是一个特殊的命令。魔术命令通过将%符号与要运行的命令一起使用来工作。
魔术命令有很多种,但在本文中我只展示最常用的9个魔术命令。让我们开始吧。
%who
它将显示您在jupiter Notebook环境中拥有的所有可用变量。让我在下面展示一个例子。
import seaborn as sns
df = sns.load_dataset(''mpg'')
a = ''simple''
b = 2
我们创建了3个不同的变量;df, a,和b。如果您在您的Jupyter Notebook单元格中键入%who,它将显示所有现有的变量。
我们可以看到我们拥有所有的变量,包括环境中预先存在的变量。
如果您想要查看特定的变量,比如只查看str变量,该怎么办?它是很容易的。您需要在魔术命令之后输入对象类型。在本例中,它是%who str。
%timeit
这个命令很有趣。它通过多次运行来评估代码的执行速度,并产生执行时间的平均+标准偏差。让我们举个例子。
import numpy as np
%timeit np.random.normal(size=1000)
使用%timeit 魔术命令,我们知道每个执行时间的执行时间只会偏差341ns左右。
当您想要确定代码执行和循环过程的稳定性时,这个命令非常有用。
%store
如果你在一个笔记本上做一个项目,而你想在另一个笔记本上传递你的变量,那该怎么办呢?您不需要pickle它或将它保存在某个目标文件中。您需要的是使用%store 魔术命令。
这是我们以前的Jupyter Notebook与'' df ''变量包含mpg数据帧。接下来,我想把这个“df”变量移动到另一个笔记本上。我只需要键入%store df。
“df”变量现在存储在Jupyter Notebook和准备在不同的Jupyter Notebook中共享使用。让我们尝试创建一个新的笔记本,并输入%store -r df。
我们的“df”变量已经转移到另一个笔记本上,准备用于另一个分析。关于%store 魔术命令的另一个好处在于,您可以删除记事本中的变量,而您仍然可以在%store 魔术命令中存储变量。
%prun
另一个与时间有关的魔术命令。%prun用于计算函数或程序执行每个函数需要多长时间。
%prun的惊人之处在于,它显示了一个列表,列表中其中可以看到语句中每个内部函数被调用的次数、每次调用的时间以及函数所有运行的累积时间。
让我们通过一个示例来运行%prun 魔术命令。
如上图所示,我们可以看到每个函数在语句中的执行时间,以及它们的执行时间加上累积时间。
%history or %hist
当你花了很多时间做分析后,你想知道你做过什么以及你目前的状况,或者有时候你不得不在单元格之间来回跳转以运行函数时,你会不会经常忘记历史的操作?
在这种情况下,我们可以使用%history 魔术命令查看您的活动日志,并跟踪您已经做了什么。
尝试在jupiter notebook单元格中运行%history,看看输出是什么。
%pinfo
当处理一个新的对象或包时,您希望获得所有的详细信息。如果你是像我一样懒,那么我们可以使用魔法命令%pinfo 得到所有的详细信息。
让我们尝试使用之前的DataFrame对象运行这个魔术命令。
使用这个神奇的命令,我们可以看到关于对象的所有信息和我们可以使用的所有参数。
%%writefile
对于开发和生产环境来说,jupiter Notebook并不是最好的IDE,但这并不意味着我们不能在jupiter单元中做到这一点。
如果您已经编写了可以复用的函数,并希望将其保存在python文件中,该怎么办呢?当然,您可以打开另一个IDE并复制粘贴该文件,但是有一种更简单的方法可以做到这一点。我们可以使用神奇的命令%%writefile来达到同样的结果。
让我们尝试运行以下代码。
%%writefile test.py
def number_awesome(x):
return 9
检查当前目录;现在应该有一个新的Python文件。
%pycat
如果您想采用另一种方式,比如将Python文件读取到您的jupiter notebook中,该怎么办?您也可以使用%pycat 魔术命令来实现这一点。
让我们尝试阅读我们之前的Python文件。
一个新的弹出窗口将显示Python文件中的所有代码。
当您希望在jupiter Notebook中使用许多生产和开发代码时,这个神奇的命令非常有用。
%quickref
最后一个魔法命令是%quickref。为什么这是应该知道的魔法命令?因为这个魔法命令详细解释了Jupyter Notebook中存在的所有魔法命令。
我们试着在你的笔记本上运行一下。
就像这样,现在您将看到您可以使用的每个魔法命令的所有解释。那是多么有用啊!
总结
魔术命令是一种特殊的命令,在Jupyter Notebook它可以帮助我们以提高我们的日常开发效率,作为一个数据科学家。我认为这9个魔法命令是必须知道的。
作者:Cornellius Yudha Wijaya
原文地址:https://towardsdatascience.com/9-magic-command-to-enhance-your-jupyter-notebook-experience-101fb5f3a84
deephub翻译组
本文分享自微信公众号 - DeepHub IMBA(deephub-imba)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。
anaconda Jupyter Notebook 中的内核错误:ImportError
如何解决anaconda Jupyter Notebook 中的内核错误:ImportError?
我遇到了以下错误
Traceback (most recent call last):
File "C:\Users\Abhilash H.P\AppData\Roaming\Python\python38\site-packages\tornado\web.py",line 1704,in _execute
result = await result
File "C:\Users\Abhilash H.P\AppData\Roaming\Python\python38\site-packages\tornado\gen.py",line 769,in run
yielded = self.gen.throw(*exc_info) # type: ignore
File "C:\ProgramData\Anaconda3\lib\site-packages\notebook\services\sessions\handlers.py",line 69,in post
model = yield maybe_future(
File "C:\Users\Abhilash H.P\AppData\Roaming\Python\python38\site-packages\tornado\gen.py",line 762,in run
value = future.result()
File "C:\Users\Abhilash H.P\AppData\Roaming\Python\python38\site-packages\tornado\gen.py",in run
yielded = self.gen.throw(*exc_info) # type: ignore
File "C:\ProgramData\Anaconda3\lib\site-packages\notebook\services\sessions\sessionmanager.py",line 98,in create_session
kernel_id = yield self.start_kernel_for_session(session_id,path,name,type,kernel_name)
File "C:\Users\Abhilash H.P\AppData\Roaming\Python\python38\site-packages\tornado\gen.py",line 110,in start_kernel_for_session
kernel_id = yield maybe_future(
File "C:\Users\Abhilash H.P\AppData\Roaming\Python\python38\site-packages\tornado\gen.py",in run
value = future.result()
File "C:\ProgramData\Anaconda3\lib\site-packages\notebook\services\kernels\kernelmanager.py",line 176,in start_kernel
kernel_id = await maybe_future(self.pinned_superclass.start_kernel(self,**kwargs))
File "C:\Users\Abhilash H.P\AppData\Roaming\Python\python38\site-packages\jupyter_client\multikernelmanager.py",line 186,in start_kernel
km.start_kernel(**kwargs)
File "C:\Users\Abhilash H.P\AppData\Roaming\Python\python38\site-packages\jupyter_client\manager.py",line 337,in start_kernel
kernel_cmd,kw = self.pre_start_kernel(**kw)
File "C:\Users\Abhilash H.P\AppData\Roaming\Python\python38\site-packages\jupyter_client\manager.py",line 286,in pre_start_kernel
self.write_connection_file()
File "C:\Users\Abhilash H.P\AppData\Roaming\Python\python38\site-packages\jupyter_client\connect.py",line 466,in write_connection_file
self.connection_file,cfg = write_connection_file(self.connection_file,File "C:\Users\Abhilash H.P\AppData\Roaming\Python\python38\site-packages\jupyter_client\connect.py",line 136,in write_connection_file
with secure_write(fname) as f:
File "C:\ProgramData\Anaconda3\lib\contextlib.py",line 113,in __enter__
return next(self.gen)
File "C:\Users\Abhilash H.P\AppData\Roaming\Python\python38\site-packages\jupyter_core\paths.py",line 461,in secure_write
win32_restrict_file_to_user(fname)
File "C:\Users\Abhilash H.P\AppData\Roaming\Python\python38\site-packages\jupyter_core\paths.py",line 387,in win32_restrict_file_to_user
import win32api
ImportError: DLL load Failed while importing win32api: The specified procedure Could not be found.
如何解决此错误?
我尝试了 Stack Overflow、Youtube 上几乎所有可用的解决方案,甚至我完全删除了 anaconda 和 Python 及其依赖项,然后重新安装了它们。但仍然无法正常工作。
解决方法
问题通过重置环境变量解决...
如果有人遇到同样的错误,只需检查 anaconda 安装目录的路径并检查环境变量是否也匹配相同...
第一步:在windows搜索栏中搜索环境变量
第 2 步:在系统属性对话框下选择环境变量
第 3 步:检查系统中的 Anaconda 安装目录路径(用户/系统)
第 4 步:如果在 User 中,则在 User Variables 下选择 Path,否则在 System Variables 下选择 Path 并单击 Edit
步骤 5:从编辑环境变量对话框中选择新建
步骤 6:粘贴 Anaconda 安装目录路径。
第 7 步:完成
第 8 步:如果效果不佳,请删除与 Python 和 Anaconda 相关的所有路径变量并卸载 anaconda 及其所有依赖项,删除与 Anaconda 和 Python 相关的所有文件...并重新安装 anaconda...它有效...
谢谢...
,该错误与“pywin”有关,如果您已经拥有该软件包,请尝试此操作:
pip install --upgrade pywin32==225
或者这个
pip install pywin32==225
,
我按照以下步骤操作:
-
要在 Anaconda 中创建新的虚拟环境,请键入以下命令 第一步:conda create -n myenv python=Version (python=3.8)
-
首先激活创建的环境 第 2 步:conda activate myenv
-
首先,激活您的虚拟环境并运行此代码。 第 3 步:pip install --user ipykernel
-
如果我们想在 Jupyter Notebook 中拥有虚拟环境,我们需要手动添加内核。这就是为什么我们需要通过运行此代码来添加它。 第 4 步:python -m ipykernel install --user --name=myenv
这样,我们已经设置了我们的虚拟环境内核并准备好在 Jupyter Notebook 中使用。
在我的例子中,错误是因为导入 win32api 时 DLL 加载失败,这个导入错误。
由@Alama1 的命令解决: pip install pywin32==225
docker 配置 anaconda + jupyter notebook 纪要
首先,pull官方的镜像,名字叫:continuumio/anaconda3
首先的首先,如果默认还是需要sudo运行docker命令,可以考虑把当前用户加入到docker组(usermod -aG docker $USER),然后重新登录一下就好了(备注:如果也在用tmux操作,需要重新开一个session,不然fork出来的user login总是保留着旧的状态。)
其次,这时候其实建议写一个dockerfile,不过因为偷懒,且不是永久性质的部署,所以选择了直接运行image。
目前用的命令是直接运行bash,然后再attach进去手动运行jupyter。docker run 对应的指令如下:
docker run -it -p 127.0.0.1:9999:8888 -v /home/user/container-notebook:/opt/notebook --name notebook continuumio/anaconda3
怕自己以后忘记这里说明一下,-p是端口映射,把容器内的8888端口映射到本机的9999。注意:如果不加127.0.0.1默认是bind 0.0.0.0
以及,-v 是目录(volume)映射,把本机的container-notebook挂到了容器内的/opt/notebook
--name 是方便以后操作加上的,不加的话会随机生成一个名字,不好认。
至于command,因为默认会运行bash,所以image name后面就省略command部分了。
至于为什么需要先进shell,主要是为了设置jupyter的密码。因为不设置密码的话登录要用url token,太麻烦了,而用参数明文指定密码也不太好,只好手动操作了。
设置密码的指令很简单:jupyter notebook password 即可。注意:密码保存在~/.jupyter下的一个json config里面,非明文,仅保存了hash值。如果忘了只能手动再设置一遍。
之后在shell里面运行notebook的命令也很简单:jupyter notebook --notebook-dir=/opt/notebook --ip=* --no-browser --allow-root 即可。
这里也说明一下相关的细节:因为官方的docker image只有root用户,所以不加allow-root运行不了。其他参数都好理解。
最后,因为运行了上面这条jupyter的指令后,stdin就被占用了,这时候ctrl+c不是退出container,而是终止jupyter。官方的默认退出container的操作是快捷键ctrl+p然后ctrl+q,这样可以保持容器内的前台任务继续运行。
其他补充
因为google了很多相关的东西,虽然不一定跟部署jupyter有关,不过还是有用也值得记录一下的。
1. 停止 docker container 一般优先用stop,kill是发送SIGKILL强制退出,没有提前发送SIGTERM
2. 想要在docker里面用tmux的前提是有一个可以安装tmux的环境(比如基于某个发行版的docker image)
3. docker pull下来的image默认存储在/var/lib/docker
4. docker run 的时候加上-d参数可以把stdout的输出转移到后台,需要查看的话用docker container logs
ref:
官方镜像(内附简要使用说明):https://hub.docker.com/r/continuumio/anaconda3
https://www.ruanyifeng.com/blog/2018/02/docker-tutorial.html
docker kill 和 stop 有什么区别》http://dockone.io/question/158
关于Docker目录挂载的总结 - iVictor - 博客园》https://www.cnblogs.com/ivictor/p/4834864.html
https://stackoverflow.com/questions/19234831/where-are-docker-images-stored-on-the-host-machine
后台运行 | Docker 从入门到实践》https://vuepress.mirror.docker-practice.com/container/daemon.html
端口映射:https://docs.docker.com/config/containers/container-networking/
https://docs.docker.com/engine/reference/commandline/attach/
目录挂载:https://docs.docker.com/storage/volumes/
Exception: Jupyter command `jupyter-notbook` not found.
- adconda 默认环境是 base ,切换自己创建的环境中启动 jupyter notbook,出现如下异常
(python35) D:\workspace\pythonDL\ocr\keras_ocr>jupyter notbook
Traceback (most recent call last):
File "d:\tool\anaconda3\envs\python35\lib\runpy.py", line 193, in _run_module_as_main
"__main__", mod_spec)
File "d:\tool\anaconda3\envs\python35\lib\runpy.py", line 85, in _run_code
exec(code, run_globals)
File "D:\tool\Anaconda3\envs\python35\Scripts\jupyter.exe\__main__.py", line 9, in <module>
File "d:\tool\anaconda3\envs\python35\lib\site-packages\jupyter_core\command.py", line 247, in main
command = _jupyter_abspath(subcommand)
File "d:\tool\anaconda3\envs\python35\lib\site-packages\jupyter_core\command.py", line 134, in _jupyter_abspath
''Jupyter command `{}` not found.''.format(jupyter_subcommand)
Exception: Jupyter command `jupyter-notbook` not found.
- 需要安装
(python35) C:\Users\..>pip install ipykernel (python35) C:\Users\ 小松 >
(python35) C:\Users\..>python -m ipykernel install --user --name python35 --display-name "Python [conda env:python35]"
Installed kernelspec python35 in C:\Users\...\AppData\Roaming\jupyter\kernels\python35(python35) C:\Users\..>jupyter notebook
[I 14:17:44.082 NotebookApp] JupyterLab extension loaded from D:\tool\Anaconda3\lib\site-packages\jupyterlab
关于Jupyter Notebook nbconvert无需魔术命令/无降价促销和jupyternotebook魔法命令的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于9个可以提高Jupyter Notebook开发效率的魔术命令、anaconda Jupyter Notebook 中的内核错误:ImportError、docker 配置 anaconda + jupyter notebook 纪要、Exception: Jupyter command `jupyter-notbook` not found.等相关内容,可以在本站寻找。
本文标签: