Редактировать : Эта проблема исправлена в Python. Вам не нужно рассматривать эту проблему после следующей небольшой версии Python. Следующий ответ все еще полезен для анализа.
В Python3.6 webbrowser.get()
даст вам что-то вроде:
<webbrowser.BackgroundBrowser object at 0x7f1e5373a048>
Но в Python3.7:
<webbrowser.Opera object at 0x7f546c22ea90>
.
Это означает, что в Python3.6 он попытается открыть URL, используя стандарт XDG:
xdg-open https://google.com
тогда как в Python3.7 он будет открывать браузер Opera напрямую, используя свою команду CLI :
opera -remote "openURL(https://google.com,new-window)"
Хотя я не уверен, предназначено ли это изменение, оба пути должны быть правильными. Проблема в том, что Опция командной строки Opera не работает . Это не ошибка Python, это ошибка Opera. (Попробуйте открыть с помощью команды выше, вы увидите тот же http://openurl%28https//google.com,new-window)
.)
В качестве обходного пути вы можете принудительно открыть URL-адрес через стандарт XDG, используя register()
с новым аргументом preferred
, введенным в 3.7 .
import webbrowser
webbrowser.register("xdg-open", None, webbrowser.BackgroundBrowser("xdg-open"), preferred=True)
print(webbrowser.get()) # Now you will see <webbrowser.BackgroundBrowser object at 0x7f1e5373a048>
webbrowser.open('https://google.com')
Надеюсь, это поможет!
Редактировать: похоже, что ошибка Opera в том, что они не обновили документацию после того, как они изменили движок на Chromium. Opera прекрасно работает с аргументами Chrom's CLI. Я выпустил изменение в Python , чтобы отразить это.