By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
425,542 Members | 1,740 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 425,542 IT Pros & Developers. It's quick & easy.

Firefox bug in webbrowser module on Ubuntu?!

P: n/a
Hi,

During optimizing SPE for Ubuntu, I found something strange. I have
Ubuntu 5.10 "The Breezy Badger" and unfortunately this code is not
working:
import webbrowser
webbrowser.open("http://www.python.org")
It does not throw an exception, but is not able to launch a browser.

Ubuntu ships with Firefox as its default browser, but it looks like it
is not recognized by the standard webbrowser module, instead it seems
to prefer Netscape, which is not installed:
import webbrowser
webbrowser.browser 'netscape'

In the _browsers attribute there seems to be an entry for
'mozilla-firefox', but doesn't seem to work webbrowser._browsers {'galeon': [None, <webbrowser.Galeon instance at 0xb7d261cc>],
'mozilla': [None, <webbrowser.Netscape instance at 0xb7d2608c>],
'mozilla-firefox': [None, <webbrowser.Netscape instance at
0xb7d2612c>], 'w3m': [None, <webbrowser.GenericBrowser instance at
0xb7d22fec>]}

The tryorder is... webbrowser._tryorder

['galeon', 'mozilla-firefox', 'mozilla', 'w3m']

As a workaround I check for the file '/usr/bin/firefox' and use a
os.system call. Of course a user could maybe install Netscape, but it
would be absurd that SPE would require Netscape.

Is there a reason why this doesn't work? It looks like a bug.

Stani
--
http://pythonide.stani.be

Jan 20 '06 #1
Share this Question
Share on Google+
5 Replies


P: n/a
SPE - Stani's Python Editor wrote:

During optimizing SPE for Ubuntu, I found something strange. I have
Ubuntu 5.10 "The Breezy Badger" and unfortunately this code is not
working:
import webbrowser
webbrowser.open("http://www.python.org")


It does not throw an exception, but is not able to launch a browser.


My opinion is that the webbrowser module is fairly obsolete, and that
on modern desktop environments one should use whichever mechanism that
is provided by such environments to open URLs instead. Consequently, I
made a package available for the purpose of performing such operations:

http://www.python.org/pypi/desktop

There are certain ways to override the autodetection in use within that
module, and a DESKTOP_LAUNCH environment variable can also be set to
configure its behaviour further. Unfortunately, attempts to confirm the
standardisation status of that variable failed to cut through the turf
wars, newbie-bashing and MIME type hair-splitting on the xdg mailing
list, but a Google search seemed to suggest that my application of it
isn't inappropriate.

Paul

Jan 20 '06 #2

P: n/a
ncf
This section is the cause of the problem:

for browser in ("mozilla-firefox", "mozilla-firebird",
"mozilla", "netscape"):
if _iscommand(browser):
register(browser, None, Netscape(browser))

It's trying to load "mozilla-firefox" as the exec name instead of
simply "firefox".

A potential workaround *might* be to do this:

import webbrowser
if webbrowser._iscommand("firefox"):
webbrowser.register("firefox", None, Netscape("firefox"))
webbrowser.open("http://www.google.com/")

((Untested))

Best of luck
SPE - Stani's Python Editor wrote:
Hi,

During optimizing SPE for Ubuntu, I found something strange. I have
Ubuntu 5.10 "The Breezy Badger" and unfortunately this code is not
working:
import webbrowser
webbrowser.open("http://www.python.org")
It does not throw an exception, but is not able to launch a browser.

Ubuntu ships with Firefox as its default browser, but it looks like it
is not recognized by the standard webbrowser module, instead it seems
to prefer Netscape, which is not installed:
import webbrowser
webbrowser.browser 'netscape'

In the _browsers attribute there seems to be an entry for
'mozilla-firefox', but doesn't seem to work webbrowser._browsers {'galeon': [None, <webbrowser.Galeon instance at 0xb7d261cc>],
'mozilla': [None, <webbrowser.Netscape instance at 0xb7d2608c>],
'mozilla-firefox': [None, <webbrowser.Netscape instance at
0xb7d2612c>], 'w3m': [None, <webbrowser.GenericBrowser instance at
0xb7d22fec>]}

The tryorder is... webbrowser._tryorder

['galeon', 'mozilla-firefox', 'mozilla', 'w3m']

As a workaround I check for the file '/usr/bin/firefox' and use a
os.system call. Of course a user could maybe install Netscape, but it
would be absurd that SPE would require Netscape.

Is there a reason why this doesn't work? It looks like a bug.

Stani
--
http://pythonide.stani.be


Jan 21 '06 #3

P: n/a

ncf> This section is the cause of the problem:
ncf> for browser in ("mozilla-firefox", "mozilla-firebird",
ncf> "mozilla", "netscape"):
ncf> if _iscommand(browser):
ncf> register(browser, None, Netscape(browser))

In SVN trunk (aka 2.5a0) this code is

for browser in ("mozilla-firefox", "firefox",
"mozilla-firebird", "firebird",
"mozilla", "netscape"):
if _iscommand(browser):
register(browser, None, Mozilla(browser))

where Mozilla == Netscape, so your proposed fix appears to be correct.
(Which reminds me, I have a patch to webbrowser.py to test...)

Skip
Jan 21 '06 #4

P: n/a
This seems ok...
import webbrowser
webbrowser._iscommand("firefox") True webbrowser.register("firefox",None,webbrowser.Nets cape("firefox"))
webbrowser._browsers {'galeon': [None, <webbrowser.Galeon instance at 0xb7d471cc>],
'firefox': [None, <webbrowser.Netscape instance at 0xb7d43bcc>],
'mozilla': [None, <webbrowser.Netscape instance at 0xb7d4708c>],
'mozilla-firefox': [None, <webbrowser.Netscape instance at
0xb7d4712c>], 'w3m': [None, <webbrowser.GenericBrowser instance at
0xb7d43fec>]}

But it is still not working... webbrowser.open("http://www.python.org") ....doesn't do anything

However... import os
os.path.exists('/usr/bin/firefox')

True

I also have Ubuntu on a VMware Player and there it works out of the
box, although firefox is not registered there. (mozilla-firefox is.)

It is strange as I just installed Ubuntu on this system and can't
imagine something is screwed up already.

Jan 22 '06 #5

P: n/a
Paul Boddie napisał(a):
There are certain ways to override the autodetection in use within that
module, and a DESKTOP_LAUNCH environment variable can also be set to
configure its behaviour further. Unfortunately, attempts to confirm the
standardisation status of that variable failed to cut through the turf
wars, newbie-bashing and MIME type hair-splitting on the xdg mailing
list, but a Google search seemed to suggest that my application of it
isn't inappropriate.


As this isn't yet actual standard but proposed only, I decided to give
my users ability to select preferred way to "open" media files, so even
running some exotic desktop (Fluxbox and FVWM are very popular choices
here) they can open urls from my application using either kfmclient,
gnome-open or custom defined command.

--
Jarek Zgoda
http://jpa.berlios.de/
Jan 22 '06 #6

This discussion thread is closed

Replies have been disabled for this discussion.