pip install bs4、じゃなくて、pip install beautifulsoup4
久しぶりに Beautiful Soup
を使おうと思った。
Pythonのパッケージインストールでいつも困るのは、インストールする際に打つパッケージ名が、自分の記憶になる内容と異なることがある点だ。
例えば Beautiful Soup
なら、インストール時のコマンド名は beautifulsoup
, beautifulsoup4
, bs4
、などがぱっと浮かんでくるがどれでインストールすればよいのかわからない点だ。
こういうときはググってinstallコマンドを探すのだが、たまたまそのときググって何気なく開いた某有名サイトで記述されているコマンドが、
pip install bs4
だった。
一応有名なサイトだし、さすがに間違っていないだろうと思ってインストールしたが、bs4==0.0.1
というインストール後のパッケージバージョンを見て、あ、これは間違ったなとおもった。
※ちなみにbs4でインストールした場合も問題なく Beautiful Soup
自体は使える。ただ普通に使えるけど、なぜ bs4
というパッケージ名でインストールできたのかというのが不安だった。
最近はPythonをはじめ、少し前にあったnpm関連のことなども含め、普通に使えていると思っているパッケージに悪意のあるコードが混ざっていることがよく注目を集めている。
上の内容とは異なるものの、bs4というパッケージ名とか、beautifulsoup4をインストールしたと思いこんでいる人に対して悪意あるコードを忍び込ませるには格好のチャンスだろう。
というわけで、完全にbs4もやばいパッケージでは?と思って調べてみたが、当然Beautiful Soup
側もこういうことは考慮していたようだ。
これは実際にPyPl内の該当するパッケージの記述である。
ここのプロジェクトの説明文には、
- Beautiful Soupの開発者が名前のスクワッティングを防ぐために管理しているダミーパッケージであること
- PyPI の Beautiful Soup Python パッケージの正式名称は beautifulsoup4であること
- このパッケージは、誤ってpip install bs4と入力しても、Beautiful Soupに行き着くことを保証するものである
という記述が見られる。
というわけで、やばいパッケージを入れてしまったのでは?という私の不安は杞憂に終わることになった。
(というか、インストール前にちゃんとPyPlのページで調べろよ!と反省である)
ちなみに pip search <パッケージ名>
でも調べられると書こうと思ったが、いまコマンド打ってみたら、エラーになった。
ERROR: XMLRPC request failed [code: -32500] RuntimeError: PyPI's XMLRPC API is currently disabled due to unmanageable load and will be deprecated in the near future. See https://status.python.org/ for more information
下記のページを見に行ってもall greenである。
まあ、いいか。
とりあえず pip install
する前はちゃんとPyPlにいってインストールコマンドを確認しましょうというお話でした。
(こういうのは他の言語も同様)
ちなみにBeautiful Soup のPyPlページはこちら。
bs4
でも一応は問題なく Beautiful Soup
は使えるようだが、正式なインストールコマンドは
pip install beautifulsoup4
となります。