在MacOS中,通过双击打开ipython笔记本。

28
我下载了几个IPython笔记本,我想在浏览器标签页中打开它们,而不需要导航到我下载它们的目录并运行ipython notebook notebook_name.ipynb
我意识到这可能意味着我很懒,但对我来说似乎是一个常见的用例。 我错过了什么明显的东西吗?

1
我同意这是一个非常基本的功能。我也需要它来与不是程序员但我想分享我的笔记本的合作者一起使用。 - jvtrudel
这个问题在这里已经得到解答:https://dev59.com/pF0Z5IYBdhLWcg3w4jly - Vasco
刚刚添加了我的答案到这里 it works like a charm - sahuja
8个回答

16

我发现了一种很好的方法,使用Automator(2017年10月;参考这里的信息):

  1. 打开Automator并创建一个新的应用程序menu
  2. 从列表中拖动和放置Run Shell Script,可能需要以下设置Shell:/bin/bashPass input:as argumentsrun shell script
  3. 插入以下代码;如有必要,请调整到jupyter的路径

代码

#!/bin/sh
variable="'$1'"
the_script='tell application "terminal" to do script "/usr/local/bin/jupyter notebook '
osascript -e "${the_script}${variable}\""
  1. 将脚本保存为应用程序(!)
  2. 尝试打开.ipynb文件并将默认应用程序更改为此新创建的应用程序。

注意事项

  1. 这将打开终端并运行jupyter notebook命令,以便您可以从那里中断和停止笔记本服务器。 还请注意,您不能像Automator中那样测试应用程序,但需要添加获取指定的Finder项目并插入一些测试笔记本(仅供测试目的)。

如评论中所指出,还有两个注意事项:

  1. 为避免在浏览器历史记录中垃圾邮件笔记本,请在隐身/私人模式下启动笔记本:在隐身窗口中运行jupyter notebook

  2. 如果您想在一个服务器上运行笔记本且不介意使用额外的工具,则Sachit Nagpal指出(谢谢),也可以使用nbopen。要使用此工作流,请将"/usr/local/bin/jupyter notebook '替换为"nbopen '。任何其他工具都应该类似。


不用谢。我想在这里添加一个注释:我刚刚遇到了一个小问题,当我双击一个*.ipynb文件时,脚本不会结束,甚至会超时。这似乎是由终端应用程序的某些情况引起的(长时间闲置?)。由于我无法确定这些情况是什么,但只能通过尝试手动打开终端来意外修复它,有更多经验的人可以给个提示吗? - gr4nt3d
这会每次启动新服务器吗?有没有办法通过已经运行的服务器启动文件?只有在没有Jupyter服务器正在运行时才开始新服务器。 - Sachit Nagpal
@SachitNagpal 是的,这将每次启动一个终端和jupyter笔记本内核。应该有一种方法可以通过一些shell命令来实现这一点。基本上,您可以告诉终端运行任何(例如bash-)脚本。然而,我对bash脚本不太熟悉,但您可能需要运行jupyter notebook list(或ps?)来查找正在运行的内核和一些ID。然后,您可以区分并使用某个命令将文件/路径附加到正在运行的内核上。您可能需要为打开正在运行的内核中的文件的shell命令提出单独的问题,并查找grep - gr4nt3d
感谢@gr4nt3d解释如何完成这个任务。目前,我已经能够使用nbopen(github.com/takluyver/nbopen)实现这一点。 - Sachit Nagpal
1
谢谢。这比安装其他软件包更好的方式。 - frankliuao
我遇到了一个问题,我的浏览器历史记录里充满了笔记本(即使我只是方便快速地查看)。请参见此链接以获取隐身/私人笔记本的解决方法。 - gr4nt3d

16

使用Pineapple应用程序打开和处理IPython/Jupyter笔记本,非常酷。

更新:

现在有nteract,这是一款新的类似Jupyter的桌面应用程序。安装后,将其设置为打开.ipynb文件的默认应用程序。然后只需双击任何笔记本即可立即启动它。

nteract geojson


3
很棒的独立应用程序,我认为它们非常适合新手学习科学计算。也许高级用户希望有些与他们现有的Anaconda安装相配合的东西? - tslmy

4
  1. pip install nbopen.
  2. open Automator, create new Application

    • Drag'n drop Run Shell Script
    • Change Pass input to as arguments
    • Copy/paste this script:
    variable="'$1'"
    the_script='tell application "terminal" to do script "nbopen '
    osascript -e "${the_script}${variable}\""
    
  3. Save the new application to Applications directory as nb_open

  4. Right click any ipynb file and select "Open with > Other" and select the nb_open in the Applications folder. Don't forget to check "Always Open With".
  5. Select an ipynb file, get info (command + i) > Open With (select nb_open if not selected already) > Click Change All.... Done.

3
这里发布的应用程序对我来说运行得很好:http://bioequity.org/2013/11/16/ipynbviewer/。您还需要下载iTerm2,如页面上所述。
请注意,如果文件名中有空格,这种方法将无法使用,但是您可以进行修改以使其适用于文件名中有空格的情况。在iPyNbViewer.app上按Control键并选择“显示包内容”。编辑文件Contents/Resources/Scripts/main.scpt。将三个“POSIX path”实例更改为“quoted form of POSIX path”。现在它将适用于文件名中有空格的情况。
要将所有.ipynb文件设置为使用该应用程序打开,请获取其中一个文件的信息(command-I),然后选择iPyNbViewer应用程序以打开所有.ipynb文件。
如果双击iPython笔记本文件时这是默认行为,那将会非常棒...

我开发了这个工具iPyNbViewer。感谢丹的建议,我已经更新了所有三个quoted form of POSIX path实例。享受吧! - laviex

1
我想在Ubuntu上提供一种方法来实现它(这对我有效,但我不承担任何责任)。具体方法在这里说明。简而言之,您需要创建一个新的MIME类型,然后编写一个作为启动应用程序的脚本:
#!/bin/bash
netstat -tln |grep "8902"
# if not found - equals to 1, start it
if [ $? -eq 1 ]
then
ipython notebook / --no-browser --port=8902 &
sleep .5
fi
xdg-open http://localhost:8902/notebooks$1

这将始终在8902端口上打开笔记本服务器,但首先检查是否已经有运行的服务器,如果有,则使用它。 然后,您可以使用ubuntu tweak将您的脚本选择为您刚刚创建的"MIME类型IPython Notebook"的默认应用程序。 在我看来,这并不是非常优雅,但是很值得。

1

0

看这个链接。 将一个 Bash 脚本放入存放您的 IPython 笔记本的文件夹中,然后双击它即可打开笔记本实例。从上面的链接中,Bash 脚本只有以下内容:

path=$0             # path is path to this file
cd ${path%/*.*}     # clip off the file name to get directory path and cd
ipython notebook --pylab inline

最后,您需要执行chmod u+x命令将该脚本变成可执行文件,完成。

0
我使用了命令行应用程序“nbopen”,并将其放入Platypus包装器中,以在Macos上实现拖放和双击打开。可以使用“pip”下载“nbopen”。 当按照DanHickstein的描述使用时,它运行良好。 我的代码唯一的问题是需要完整路径到nbopen命令。我知道应该能够以某种方式使用“which nbopen”,但无法使其正常工作。 这是我的Platypus代码:
#!/bin/bash
#  Opens ipynb files in a Jupyter Notebook
#  echo $1
#  $1 is the path of the dropped file
/Users/robw/anaconda/bin/nbopen $1
#  Based on an idea from 
#  https://www.quora.com/Is-there-a-straightforward-way-to-open-an-IPython-Notebook-in-Windows-by-double-clicking

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接