58

I am trying to start IPython with a non default browser (in my case Firefox) and thought I could replicate the replicate the script given in this blog

I am on Windows 7

I put the following code in a file say "module.py"

import subprocess
subprocess.call("ipython notebook --no-browser", shell=True)
subprocess.call([r'C:\Program Files (x86)\Mozilla Firefox\Firefox.exe', '-new-tab', 'http://127.0.0.1:8888/'])

However when I run it from the command line

 python C:\Users\mugabal\Desktop\module1.py

It execute the first line but not the second one (both lines work fine individually)

My question (in a more general term) how can I launch a process and tell it not to highjack the console window?

I apologize in advance if I have overseen an obvious explanation but I looked both in the subprocess documentation and on this platform

----- UPDATE -----

I should have added that I tried to launch IPython with selected browser but could not figure out how to get it work

>ipython notebook --browser='C:\Program Files (x86)\Mozilla Firefox\Firefox.exe'
... 
[NotebookApp] The IPython Notebook is running at: http://127.0.0.1:8888/
...
**[NotebookApp] No web browser found: could not locate runnable browser.**

To be precise, the following command in a Windows command prompt window works as expected:

start firefox 

but

ipython notebook --browser=firefox 

does not work (same error as above).

Ross Ridge
  • 38,414
  • 7
  • 81
  • 112
user1043144
  • 2,680
  • 5
  • 29
  • 45

10 Answers10

74

I had the same problem on windows and got it work this way:

  • Create a config file with command ipython profile create default

  • Edit ipython_notebook_config.py file, search for line

#c.NotebookApp.browser =''

and replace it with

import webbrowser
webbrowser.register('firefox', None, webbrowser.GenericBrowser('C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe'))
c.NotebookApp.browser = 'firefox'

then it works for me.

Hope it will help you.

JPG

JPG
  • 2,224
  • 2
  • 15
  • 15
  • I had to add use u'C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe' to make it work – Norfeldt Jul 18 '13 at 08:19
  • Yes! It works for jupyter notebook. only set "c.NotebookApp.browser = '/usr/bin/google-chrome' " doesn't work for chrome, but works well for firefox, which is really strange bug. Your solution solves the issue! Thanks! – oracleyue Aug 27 '17 at 22:29
  • 1
    Just a note for those who are using macOS: this works, but of course the path is different. You can link to the applications folder: `/Applications/Opera.app/Contents/MacOs/Opera`. – sodiumnitrate Jun 05 '18 at 19:34
  • 3
    For Jupyter notebook, create config with command `jupyter notebook --generate-config` and edit the jupyter_notebook_config.py file as stated above – zeeshan khan Mar 08 '19 at 10:03
37

On my mac, I got the following command to use Firefox instead of my default Chrome:

jupyter notebook --browser firefox
JBWhitmore
  • 11,576
  • 10
  • 38
  • 52
  • 1
    Thanks! **Windows notice:** This works if the path to firefox is set in your `PATH` environment variable. – S3DEV Mar 06 '20 at 12:47
11

This is not a real answer. I just want to share with the less computer savvy what JPG's answer looks like step-by-step. Presumably, on Windows Explorer (screen capture attached below), the file jupyter_notebook_config.py is listed:

enter image description here

In my case, the directory for the file (on top menu of Explorer) was C:\Users\My_name\.jupyter

The second part of the answer can be implemented by simply pasting:

import webbrowser
webbrowser.register('firefox', None, webbrowser.GenericBrowser('C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe'))
c.NotebookApp.browser = 'firefox'

in the space on the space seen on the screen capture below, corresponding to the jupyter_notebook_config.py opened within PyCharm:

enter image description here

... only that I set it up to open in Opera:

import webbrowser
webbrowser.register('opera', None, webbrowser.GenericBrowser('C:\\Program Files (x86)\\Opera\\launcher.exe'))
c.NotebookApp.browser = 'opera'
Antoni Parellada
  • 4,253
  • 6
  • 49
  • 114
9

Why not use

--browser=<Unicode> (NotebookApp.browser)
    Specify what command to use to invoke a web browser when opening the
    notebook. If not specified, the default browser will be determined by the
   `webbrowser` standard library module, which allows setting of the BROWSER
Matt
  • 27,170
  • 6
  • 80
  • 74
  • Thanks Matt. I could not this to work (see update). How should the command look exactly ? – user1043144 Mar 26 '13 at 09:57
  • IIRC, and looking at the code, you should use the same syntax as webbrowser get : http://docs.python.org/2/library/webbrowser.html#webbrowser.get so just ipython notebook --browser='firefox' on windows I guess – Matt Mar 26 '13 at 10:12
  • Did you tried escaping backslash and space ? We just forward the option to webbrowser.get, so if you achieve to make it work, you'll know the command you need to use – Matt Mar 26 '13 at 10:34
  • from this : http://stackoverflow.com/questions/1532884/open-ie-browser-window I would say that indeed you need to escape backslash, but not space. – Matt Mar 26 '13 at 10:37
  • Thanks. escaping do not work either. actually the problem could be the configuration of the PC when I run import webbrowser, print webbrowser._browsers, it shows only explorer – user1043144 Mar 26 '13 at 11:03
  • I've no clue as of why then. Good Luck – Matt Mar 26 '13 at 13:42
  • As Matt said, this solution works just fine: `--browser=` But be carefull. If you try for example: `--browser=u'firefox'` it doesn't work, you need to use double quotes: `--browser="firefox"` – Hachi Manzur Oct 21 '13 at 22:04
5

I uncomment this line and change into False, not to make ipython notebook open a web browser at start, so we can point the ipython notebook address in an active web browser.

# Whether to open in a browser after starting. The specific browser used is
# platform dependent and determined by the python standard library `webbrowser`
# module, unless it is overridden using the --browser (NotebookApp.browser)
# configuration option.
c.NotebookApp.open_browser = False

Better still, I pin the address in my Firefox to make it active everytime I open the browser.

mbendhel
  • 51
  • 1
  • 1
4

to make it work with brave and chrome you need to append a %s param that represents the URL. Tested the following on Linux terminal and works great:

jupyter notebook --browser="google-chrome %s"
jupyter notebook --browser="brave-browser %s"

firefox doesn't need %s

jupyter notebook --browser=firefox
Savrige
  • 3,352
  • 3
  • 32
  • 38
1

I set the environment variable BROWSER to the the executable of the browser (in my case Google Chrome), and Ipython Notebook started in the browser I liked.

PS H:\> $env:BROWSER = "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"
PS H:\> $env:BROWSER
C:\Program Files (x86)\Google\Chrome\Application\chrome.exe
PS H:\>
PS H:\> ipython notebook
2015-02-19 14:05:01.690 [NotebookApp] Using existing profile dir: C:\\Users\\abc\\.ipython\\profile_default'
2015-02-19 14:05:01.832 [NotebookApp] Using MathJax from CDN: http://cdn.mathjax.org/mathjax/latest/MathJax.js
2015-02-19 14:05:01.901 [NotebookApp] The port 8888 is already in use, trying another random port.
2015-02-19 14:05:01.908 [NotebookApp] Serving notebooks from local directory: H:\
2015-02-19 14:05:01.908 [NotebookApp] 0 active kernels
2015-02-19 14:05:01.910 [NotebookApp] The IPython Notebook is running at: http://localhost:8889/
2015-02-19 14:05:01.910 [NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
1

When you execute the below code in command prompt it gives the result link which you can copy in any browser to open Jupiter notebook.

jupyter notebook --browser firefox
sanketec87
  • 31
  • 4
0

I tried what JPG and norfeldt suggested. It worked perfectly on my Windows 7 computer. Here is a copy of the modified section of ipython_notebook_config.py (located under C:\Users\'your username'\.ipython to use Safari as the default browser for notebook. As norfeldt said, please notice the u before 'C:\...)

# c.NotebookApp.certfile = u''

import webbrowser
webbrowser.register('safari', None, webbrowser.GenericBrowser(u'C:\\Program Files (x86)\\Safari\\safari.exe'))
c.NotebookApp.browser = 'safari'
-2

Without coding, you can just set your default browser to Chrome or Firefox etc. It works for my windows system.

Ye Xu
  • 83
  • 3
  • 10