見出し画像

pyqtwebengineが干渉してanaconda-navigatorのアップデートができなかった理由 #Python

anaconda-navigatorをアップデートしようとしてできなかったのですが、その原因について調べてみました

あくまでこういった原因でアップデートできないこともあるんだな程度で読んでいただければと思います


GUIでのアップデートができない

anacondaユーザーであればよく遭遇すると思いますが、上図のウィンドウが出て、 Yesを押しても一向にアップデートが終わらないことがあります

なので、コマンドプロンプトやPowerShellからコマンド操作でanaconda-navigatorをアップデートすることが割と多いように思います

今回もそうではあるんですが、違う点はコマンドでもアップデートできなかったということです

しかも、色々試行錯誤して何かいつもと原因が違うような気がしたので、忘備録として残します

コマンドプロンプトでのアップデートもできない

 先ほども書いたようにコマンドプロンプトからアップデートができませんでした

conda update anaconda-navigator==2.6.0

で、アップデートしようとするとinstallを使えと言われるのでそうします

conda install anaconda-navigator==2.6.0

できません

何やらたくさん警告を吐いた後に赤字でコメントを付けてきました

読みます

最後の部分を翻訳するとこんな感じ

環境仕様を解決できませんでした
次のパッケージはインストールできませんでした
└─ anaconda-navigator 2.6.0 is not installable because it requires
└─ pyqtwebengine >=5.15.10,<6.0a0 が必要なためインストールできません。

うーん、要するにインストール済みpyqtwebengineのバージョンが条件を満たさないからダメよと言っているようです

インストールされているpyqtwebengineのバージョンを確認します

確かに、5.15.10未満でした

では、こいつのアップデートをすればいいかと試してみます

pyqtwebengineのアップデートもできない

baseのコマンドプロンプトを起動

手っ取り早く全部のパッケージをアップデートしてしまいます

conda update --all

anacondaを再起動

pyqtwebengineのバージョンを確認します

conda list pyqtwebengine

バージョン変わらず(アップデートされず)

バージョンを指定してみる

(base) C:\Users\username>conda update pyqtwebengine==5.15.10

CondaError: Invalid spec for 'conda update': pyqtwebengine==5.15.10
Use 'conda install' instead.

先ほどと同じ、conda installを使えと

指示通りに使ってみるが、もちろんダメ

(base) C:\Users\username>conda install pyqtwebengine==5.15.10
Channels:
 - bioconda
 - conda-forge
 - defaults
Platform: win-64
Collecting package metadata (repodata.json): done
Solving environment: failed

LibMambaUnsatisfiableError: Encountered problems while solving:
  - package pyqtwebengine-5.15.10-py39hd77b12b_0 is excluded by strict repo priority

いっそのことアンインストールしてみる

(base) C:\Users\username>conda uninstall pyqtwebengine
Channels:
 - bioconda
 - conda-forge
 - defaults
Platform: win-64
Collecting package metadata (repodata.json): done
Solving environment: done

## Package Plan ##

  environment location: C:\Users\jun_9\anaconda3

  removed specs:
    - pyqtwebengine

結構たくさんのパッケージをダウングレードさせられる模様

だがしかし、

CondaSSLError: Encountered an SSL error. Most likely a certificate verification issue.

Exception: [SSL] record layer failure (_ssl.c:2580)

CondaSSLError: Encountered an SSL error. Most likely a certificate verification issue.

Exception: [SSL] record layer failure (_ssl.c:2580)

アンインストールもさせてくれない

ああ、そういえば 管理者権限 でやってなかったと思い出して、やり直してみます

こっちからだとアンインストールはできた

conda uninstall pyqtwebengine

続けて以下のバージョンをインストールしてみる

(base) C:\Windows\System32>conda install pyqtwebengine==5.15.10
Channels:
 - bioconda
 - conda-forge
 - defaults
Platform: win-64
Collecting package metadata (repodata.json): done
Solving environment: failed

LibMambaUnsatisfiableError: Encountered problems while solving:
  - package pyqtwebengine-5.15.10-py39hd77b12b_0 is excluded by strict repo priority

管理者権限で実行してもできない…


あ、そういえば、そもそもpyqtwebengineはanaconda-navigatorのインストールに必要な要件ではないのでした

pyqtwebengineをアンインストールできたならanaconda-navigatorのインストールには関与してこないはず

anaconda-navigatorがアップデートできれば良いので無視します

が!

頑なにアップデートさせてくれません

上の実行結果のエラーをさっきは無視してましたが、よく見ると

LibMambaUnsatisfiableError: 解決中に問題が発生しました:
- パッケージ pyqtwebengine-5.15.10-py39hd77b12b_0 は厳格なリポジトリの優先度によって除外されています。

うん?

リポジトリの優先度?

そう、ここで原因の糸口が見つかりました。

原因はchannelの優先順位と対応バージョン

色々コマンド打って調べてみた結果、channelの優先順位が関係していることが分かりました

私の環境でインストールされているpyqtwebengineはconda-forgeのものです

しかし、conda-forgeのpyqtwebengineは現時点で5.15.9までしかリリースされていませんでした

5.15.10をインストールしようと思ったらデフォルトのチャンネル(pkgs/main)からでないといけない

というわけで結論は、

(自分の環境において)デフォルトチャンネルよりもconda-forge、biocondaの方が優先度が高かったから

ということになります

以下は現時点でインストール可能なpyqtwebengineのバージョン一覧です

(base) C:\Users\username>conda search pyqtwebengine
Loading channels: done
# Name                       Version           Build  Channel

~ (古いバージョンは記載省略) ~

pyqtwebengine                 5.15.9 py310he49db7d_4  conda-forge
pyqtwebengine                 5.15.9 py310he49db7d_5  conda-forge
pyqtwebengine                 5.15.9 py311h5a77453_4  conda-forge
pyqtwebengine                 5.15.9 py311h5a77453_5  conda-forge
pyqtwebengine                 5.15.9 py312hca0710b_5  conda-forge
pyqtwebengine                 5.15.9  py38h30305e3_4  conda-forge
pyqtwebengine                 5.15.9  py38h30305e3_5  conda-forge
pyqtwebengine                 5.15.9  py39h2f4a3f1_4  conda-forge
pyqtwebengine                 5.15.9  py39h2f4a3f1_5  conda-forge
pyqtwebengine                5.15.10 py310hd77b12b_0  pkgs/main
pyqtwebengine                5.15.10 py311hd77b12b_0  pkgs/main
pyqtwebengine                5.15.10 py312hd77b12b_0  pkgs/main
pyqtwebengine                5.15.10  py38hd77b12b_0  pkgs/main
pyqtwebengine                5.15.10  py39hd77b12b_0  pkgs/main

さて、原因は分かったのですが、私にとってconda-forgeとbiocondaの優先度をデフォルトチャンネルよりも下げるわけにはいかないというのが現状です

さてどうするか?

conda-forgeのpyqtwebengineはしっかり今まで更新がされているので、いずれ更新されるだろうという予想のもと、

アップデートしないでconda-forgeのpyqtwebengineが更新されるまで待つ

ということにしました

いざとなったら

(base) C:\Users\username> conda install -c defaults pyqtwebengine==5.15.10
Channels:
 - defaults
 - bioconda
 - conda-forge
Platform: win-64
Collecting package metadata (repodata.json): done
Solving environment: done

## Package Plan ##

  environment location: C:\Users\jun_9\anaconda3

  added / updated specs:
    - pyqtwebengine==5.15.10


The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    ca-certificates-2024.3.11  |       haa95532_0         128 KB
    certifi-2024.2.2           |  py310haa95532_0         160 KB
    conda-24.3.0               |  py310haa95532_0         949 KB
    pyqt-5.15.10               |  py310hd77b12b_0         4.1 MB
    pyqt5-sip-12.13.0          |  py310h2bbff1b_0          75 KB
    pyqtwebengine-5.15.10      |  py310hd77b12b_0         134 KB
    qt-webengine-5.15.9        |       h5bd16bc_7        58.1 MB
    ------------------------------------------------------------
                                           Total:        63.6 MB

The following packages will be UPDATED:

  ca-certificates    conda-forge::ca-certificates-2024.2.2~ --> pkgs/main::ca-certificates-2024.3.11-haa95532_0
  pyqt               conda-forge::pyqt-5.15.9-py310h1fd54f~ --> pkgs/main::pyqt-5.15.10-py310hd77b12b_0
  pyqt5-sip          conda-forge::pyqt5-sip-12.12.2-py310h~ --> pkgs/main::pyqt5-sip-12.13.0-py310h2bbff1b_0
  pyqtwebengine      conda-forge::pyqtwebengine-5.15.9-py3~ --> pkgs/main::pyqtwebengine-5.15.10-py310hd77b12b_0
  qt-webengine       conda-forge::qt-webengine-5.15.8-h4bf~ --> pkgs/main::qt-webengine-5.15.9-h5bd16bc_7

The following packages will be SUPERSEDED by a higher-priority channel:

  certifi            conda-forge/noarch::certifi-2024.2.2-~ --> pkgs/main/win-64::certifi-2024.2.2-py310haa95532_0
  conda              conda-forge::conda-24.3.0-py310h5588d~ --> pkgs/main::conda-24.3.0-py310haa95532_0


Proceed ([y]/n)?

としても良いかもしれません

私は別にpyqtwebengineを普段使っていませんし、conda-forgeの方が大切なので、無理にアップデートする方がリスクになりかねません

まとめ

pyqtwebengineの古いバージョンがコンフリクトしてanaconda-navigatorがアップデートできなかった原因について事例紹介しました

あまり同じような方はいらっしゃらないかもしれませんが、何かのお役に立てば幸いです


サポートいただけると大きな励みになります。 どうぞよろしくお願い致します。