4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

pythonのインストールパッケージの依存関係ミスマッチを解消しよう

Last updated at Posted at 2022-03-04

記事の経緯

スクレイピングのクローラーを作ろうと思った時にseleniumと合わせてrequestsなるパッケージが必要ということでインストールした際に出くわしたエラーについてのエラー解決方法についてまとめてみました。

流れ

インストールした時に出てきた表示

terminal
Installing collected packages: urllib3
  Attempting uninstall: urllib3
    Found existing installation: urllib3 1.26.8
    Uninstalling urllib3-1.26.8:
      Successfully uninstalled urllib3-1.26.8
ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.
selenium 4.1.0 requires urllib3[secure]~=1.26, but you have urllib3 1.25.11 which is incompatible.

1. まずはググろう!

正直、何言ってるかわかんないですよね、そういう時は素直にDeepLを使って意味を理解しましょう。
調べてわかったことは
スクリーンショット 2022-03-04 13.56.03.png

なるほど、既に存在しているパッケージと関連性があるライブラリだけどバージョンの依存関係がマッチしてないですよ、ということですね。
seleniumがurllib3に対して要求しているバージョンは1.26なのに、私のPCにインストールされているのは1.25.11と違いますということです。

ここから次にやることは、

  • Googleでエラー文を調べて対処法を調べる。
  • 自分がインストールしているライブラリ(今回でいうurllib3というパッケージ)のバージョンがなんなのか改めて調べる
    ことです。

まずはインストールされているパッケージの一覧をどう見るのか。

2.インストールしているパッケージをまず確認しよう

(参考記事) https://www.yokoyan.net/entry/2018/06/13/181500

この記事を参考にして、なるほど

terminal
$ pip list

でインストールされているパッケージが確認できるのね。ということがわかります。

スクリーンショット 2022-03-04 14.04.09.png

改めて、1.25.11ということが確認できました。

3.インストール済みのパッケージの依存関係を調べよう

インストールしているパッケージの依存関係で問題があるものが調べられます。

terminal
$ pip check 

// selenium 4.1.0 has requirement urllib3[secure]~=1.26, but you have urllib3 1.25.11.

ここからもまだパッケージの同士の関係性において問題があることがわかります。
これを解決していきましょう

4.特定パッケージのバージョンを更新しよう

次にurllib3のパッケージをアップデードします。
パッケージのアップデートの方法を調べると

terminal
$ pip install -U urllib3 

アップデートした結果がこちら

terminal
Requirement already satisfied: urllib3 in ./○○○/○○○○○○○○/lib/python3.7/site-packages (1.25.11)
Collecting urllib3
  Using cached urllib3-1.26.8-py2.py3-none-any.whl (138 kB)
Installing collected packages: urllib3
  Attempting uninstall: urllib3
    Found existing installation: urllib3 1.25.11
    Uninstalling urllib3-1.25.11:
      Successfully uninstalled urllib3-1.25.11


ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.
requests 2.22.0 requires urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1, but you have urllib3 1.26.8 which is incompatible.

無事ダウンロードできたようです。
が、またもやエラーが!
先程のエラーはseleniumとurllib3がアンマッチでしたが、今度はrequestsとurllib3がアンマッチのようです。

5.requestsパッケージをアップデートしよう

次はrequestsの方をアップデートさせて解決してみます

terminal
$ pip install -U requests

アップロードを実行した結果、

terminal
  Downloading requests-2.27.1-py2.py3-none-any.whl (63 kB)

             ||
           (中略)
             ||

Installing collected packages: charset-normalizer, requests
  Attempting uninstall: requests
    Found existing installation: requests 2.22.0
    Uninstalling requests-2.22.0:
      Successfully uninstalled requests-2.22.0
Successfully installed charset-normalizer-2.0.12 requests-2.27.1

問題なくrequestsパッケージもアップデートできたようです。
こちらも再度パッケージの依存関係のミスマッチがないかチェックしてみましょう。

terminal
$ pip check 

このコマンドを実行して、先程のエラー(selenium 4.1.0 has requirement urllib3[secure]~=1.26, but you have urllib3 1.25.11.)出ないことが確認できればOK! パッケージのミスマッチは解消されたことがわかります。

これで問題なくpythonでクローリングしてデータ取得できるスタートラインに立てました。クローラーについては改めてまた別の機会でまとめたいと思います。

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?