scn*_*erd 6 python jupyter jupyter-notebook
我正在寻找一种可靠的方法来确定我的模块是从Jupyter笔记本中加载/运行,还是更具体地说,如果ipywidgets可用的话.
这不是其他问题的重复:我发现的其他一切都没有可靠的解决方案,或者(更常见的情况)他们使用Python中常见的"只是尝试它并且轻轻地失败"的方法.就我而言,我正在尝试编写以下逻辑:
if in_jupyter():
from tqdm import tqdm_notebook as tqdm
else:
from tqdm import tqdm
Run Code Online (Sandbox Code Playgroud)
我不认为"尝试和失败"是一个合适的解决方案,因为我不想产生任何输出.
到目前为止,我找到的最接近解决方案的是:
from IPython import get_ipython
get_ipython().config['IPKernelApp']['parent_appname'] == 'ipython-notebook'
Run Code Online (Sandbox Code Playgroud)
但是这个配置属性看起来很空traitlets.config.loader.LazyConfigValue(.get_value(None)只是一个空字符串).
小智 10
如果你有tqdm>= 4.27.0,你可以导入 fromtqdm.auto来处理这个:
from tqdm.auto import tqdm
Run Code Online (Sandbox Code Playgroud)
tqdm然后就可以正常使用了。如果您在笔记本中,tqdm将从.notebook.
小智 5
您可以使用以下代码段来确定您是在jupyter,ipython还是在终端中:
def type_of_script():
try:
ipy_str = str(type(get_ipython()))
if 'zmqshell' in ipy_str:
return 'jupyter'
if 'terminal' in ipy_str:
return 'ipython'
except:
return 'terminal'
Run Code Online (Sandbox Code Playgroud)
您可以在如何查看IPython笔记本中是否执行代码的情况下找到更多深入的信息?
| 归档时间: |
|
| 查看次数: |
1330 次 |
| 最近记录: |