webbrowser.open("./documentation/help.html")-- No Go in Windows
llanitedave
llanitedave at veawb.coop
Mon Feb 25 01:26:06 EST 2013
On Sunday, February 24, 2013 9:35:17 PM UTC-8, Terry Reedy wrote:
> On 2/24/2013 4:35 AM, Chris Rebert wrote:
>
>
>
> > Sounds like this might be your problem:
>
> > http://bugs.python.org/issue8936
>
>
>
> I just closed that issue an invalid. Here is most of what I wrote.
>
> '''
>
> After reading the doc and the code, I am convinced that current behavior
>
> is close to the implied wanted behavior, and that it is not a bug.
>
>
>
> The doc says
>
> webbrowser.open(url, new=0, autoraise=True)
>
> Display url using the default browser.
>
>
>
> What does 'default browswer' mean? Near the top, the doc says "If the
>
> environment variable BROWSER exists, it is interpreted to override the
>
> platform default list of browsers,". So the 'default browser' is
>
> actually the 'default browser list'. What open() does is to try each in
>
> turn and stop when one says it succeeded. So the doc should say 'using
>
> the first default browser that claims to succeed.'
>
>
>
> What does 'default browser list' mean? It depends on the platform *and*
>
> the software loaded on the particular machine when webbrowser is first
>
> imported in a particular instance of the interpreter. The 'platform'
>
> part is in the quote above, the rest is not. I will open a separate doc
>
> issue.
>
>
>
> On Windows, the list starts with 'default Windows browser', which calls
>
> os.startfile(), which, I believe, does call the user default browser.
>
> Next is Internet Explorer -- if available at that time on the particular
>
> machine! If the user-default browser rejects the url, then IE is tried.
>
>
>
> On my win7 machine today, I have Firefox the default and IE available.
>
> Firefox rejects 127.0.0.1:8080 with an 'Unable to connect' error box. IE
>
> 'accepts' it in the sense that it displays an information starting 'The
>
> webpage cannot be displayed'.
>
> '''
>
>
>
> For *this* issue, I strongly suspect that Chrome is rejecting the
>
> invalid URL and telling Python so. So IE is tried next (but not first).
>
>
>
> > The fix would seem to be ensuring that the URL you pass includes the
>
> > scheme (in your case, "file:").
>
>
>
> so that Chrome does not return an error code, in which case IE should
>
> *not* be tried as a backup.
>
>
>
> --
>
> Terry Jan Reedy
Terry, after what I've learned today I'm tempted to agree that it's not necessarily a bug, and that maybe all that's needed is a bit more clarity in the documentation.
On the other hand, it *is* a bit frustrating that Linux recognizes an html-style relative path, while Windows insists on the entire absolute path. Maybe we can call it a Windows bug, but a workaround would be nice to have.
However, combined with os.path.abspath(), it's not a huge issue -- once we understand the approach.
I certainly appreciate your taking the time to make an analysis of it, and someday I hope to have the time and skills to help out in some small way.
More information about the Python-list
mailing list