我想提供更多的关于在jupyter_notebook_config.py文件中放置什么的信息,这些信息没有包含在其他答案中。jupyter使用python的
webrowser模块通过将c.NotebookApp.browser的值传递给
webbrowser.get(using=None)函数来启动浏览器。如果未指定值,函数会选择用户的默认浏览器。如果您在此处指定一个值,则可以根据值是否以
%s
字符结尾来解释该值的两种方式之一。
如果该字符串不包含%s
字符,它将被解释为浏览器名称,并且该模块将检查是否注册了该名称的浏览器(请参阅Python文档以获取默认情况下注册哪些浏览器)。这就是Abhirup Das的答案有效的原因,首先导入了webbrowser模块
import webbrowser
然后使用该模块注册chrome浏览器。
webbrowser.register('chrome', None, webbrowser.GenericBrowser(u'C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe'))
最后,Jupyter服务器将浏览器名称设置为:
c.NotebookApp.browser = 'chrome'
此浏览器注册不会持久保存,因此每次启动服务器时都必须重复此过程。
或者,如果字符串包含字符%s
,则将其解释为字面浏览器命令。由于这个问题是关于如何在Windows上运行浏览器的,浏览器命令可能包含反斜杠。在Python字符串文字中,反斜杠用于转义任何具有特殊含义的字符(例如,在字符串文字中包括引号或双引号)。浏览器命令中的任何反斜杠都需要被转义或替换。最简单的方法是将命令中的反斜杠替换为正斜杠,例如:
'C:/Home/AppData/Local/Google/Chrome/Application/chrome.exe %s'
而非
'C:\Home\AppData\Local\Google\Chrome\Application\chrome.exe %s'
我想,用替换反斜杠为正斜杠的方式可能是唯一可行的方法,因为我无法使用Unicode/原始字符串命令或需要用额外的反斜杠转义每个反斜杠的命令。我验证了我尝试的所有字符串在Python中都可以工作,所以确保的唯一方法就是查看Jupyter源代码。
总之,由于使用该模块注册浏览器不会持久化,如果您的浏览器不是默认已注册的,则最好使用带有替换反斜杠为正斜杠的文字浏览器命令。
%s
是用来做什么的?在Linux上事情要简单得多。 - nad_romjupyter_notebook_config.py
是一个Python文件,然而变量c
从未被定义,却仍然被使用。这怎么可能? - John Wangc.NotebookApp.browser = '"C:\\Program Files\\Mozilla Firefox\\firefox.exe" %s'
。 - John Wang