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 5 2983
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
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
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
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.
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/ This discussion thread is closed Replies have been disabled for this discussion. Similar topics
2 posts
views
Thread by Matthias Huening |
last post: by
|
19 posts
views
Thread by Blair P. Houghton |
last post: by
|
8 posts
views
Thread by Dustan |
last post: by
| |
reply
views
Thread by Norman Lorrain |
last post: by
|
reply
views
Thread by BartlebyScrivener |
last post: by
|
reply
views
Thread by Dotan Cohen |
last post: by
|
2 posts
views
Thread by krishnakant Mane |
last post: by
|
reply
views
Thread by Lie |
last post: by
| | | | | | | | | | |