質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

Q&A

解決済

1回答

3637閲覧

UbuntuでPythonのwebbrowser.openができない

sy-mol

総合スコア11

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

0グッド

0クリップ

投稿2021/07/19 08:51

編集2021/07/19 11:33

前提・実現したいこと

Ubuntuのローカル環境で、Pythonのwebbrowser.openをするとブラウザは立ち上がらず
エラーも何も出ず処理が終了してしまいます。

発生している問題・エラーメッセージ

下記ソースコードの実行結果 python3 test.py start end

該当のソースコード

Python

1import webbrowser 2 3print('start') 4try: 5 webbrowser.open('http://yahoo.co.jp') 6except Exception as e: 7 print(e) 8print('end') 9

デバッグのためにtry-exceptなどを入れただけで、やりたいのはwebbrowser.open()のみです。

試したこと

試しにコマンドで
python3 -m webbrowser -t "http://www.python.org"

と打つと空行が1行できて終了しました。

補足情報(FW/ツールのバージョンなど)

Python3.8.10
既定のブラウザ:Chrome 91.0.4472.114(Official Build) (64 ビット)
Ubuntu 20.04.2 LTS

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

katsuko

2021/07/19 12:08

コマンドで ・「python3 -c 'import webbrowser; print(webbrowser.get())'」 ・「xdg-open 'http://www.python.org'」 と打ってみて、結果を追記してください。 (前者はwebbrowserモジュールのデフォルトブラウザの表示、後者はpythonを使わずに規定のブラウザで開くコマンドです)
katsuko

2021/07/19 12:08

あぁ、変に変換されちゃった。xdg-openのあとは何らかのURLを指定してください。
sy-mol

2021/07/19 12:18

質問ありがとうございます! 以下になります。 >python3 -c 'import webbrowser; print(webbrowser.get())' Traceback (most recent call last): File "<string>", line 1, in <module> File "/usr/lib/python3.8/webbrowser.py", line 65, in get raise Error("could not locate runnable browser") webbrowser.Error: could not locate runnable browser >xdg-open 'http://yahoo.co.jp' usr/bin/xdg-open: 869: www-browser: not found /usr/bin/xdg-open: 869: links2: not found /usr/bin/xdg-open: 869: elinks: not found /usr/bin/xdg-open: 869: links: not found /usr/bin/xdg-open: 869: lynx: not found /usr/bin/xdg-open: 869: w3m: not found xdg-open: no method available for opening 'http://yahoo.co.jp'
guest

回答1

0

ベストアンサー

pythonにはwebbrowserというモジュールがあるのですね。知りませんでした。

手元の環境ではデフォルトがfirefoxで特に設定せず動作しますが,
helpを見てブラウザを変更しようとすると手っとり早いのは,環境変数BROWSERchromeのパスを指定すれば
いいようです。

python

1import os 2os.environ['BROWSER']='/usr/bin/google-chrome' 3import webbrowser 4 5 6print('start') 7try: 8 webbrowser.open('http://yahoo.co.jp') 9except Exception as e: 10 print(e) 11print('end') 12

とかどうでしょうか?

投稿2021/07/19 12:41

ujimushi_sradjp

総合スコア2152

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sy-mol

2021/07/19 13:02 編集

ご回答ありがとうございます! 実行したところ、以下のようになってブラウザは開きませんでした。 start [3862:3862:0719/215429.778169:ERROR:browser_main_loop.cc(1402)] Unable to open X display. end
ujimushi_sradjp

2021/07/19 13:21

デフォルトのブラウザはうまく登録できていないので,今うまくいっていない理由を想像すると二つほど考えられます。 一つは,chromeのパスが違うこと `which google-chrome`や`which chrome`等でどこにあるか確認して違うならそこの文字列に変更してみて下さい。PATHが通っていない可能性すらあります。 もう一つは,ubuntu 21.04でかつGPUがnvidia以外の時は,Xorgではなくwaylandがデフォルトなので,Xプロトコルが使われていないことが原因という可能性があります。 この場合は,一回ログアウトしてWaylandとXorgのどちらか選択できるところがあったので,ここでXorgを選択してログインし直して試してみて下さい。 なお最後になりましたが,Xでログインせず,GUIでなくCUIでログインしている場合はどちらもうまくいかないと思います。
sy-mol

2021/07/19 13:35

ご回答の内容についてまだ検証できてないのですが すみません、1つ思い当たる点が出てきました。 Ubuntuのログインユーザーから、別ユーザーにsudo suで切り替えてプログラムを実行しているのですが、これは関係ありそうでしょうか? (切り替えたユーザーはCUIでしか使っておらず、ブラウザは立ち上げたことがない)
ujimushi_sradjp

2021/07/19 13:42

はい。Xサーバーのセッションのユーザー(GUIログインしたユーザー)以外では今回のような感じでブラウザを立ち上げるのは困難だと思います。 何かしらの方法でGUIログインしたユーザーのXセッションにrootから接続すればいいのでしょうが,私の持っている技術レベルのはるか上方に飛んでいってしまいます。
sy-mol

2021/07/19 13:57 編集

ユーザーを切り替えないで(GUIログインしたユーザーで)実行したところ、ソースの修正なくブラウザが立ち上がることを確認しました。 最初の情報に不足がありすみません。 本当にありがとうございました!!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問