今日、次のコマンドでPythonライブラリmatplotlib
をアップグレードしました。
Sudo pip3 install --upgrade matplotlib
インストールプロセス中、すべてが正常に見えました。しかし、それ以来、2つの問題が発生します。 1つは、pip
が機能しなくなったことです。すべてのpip
コマンドは、同じエラーメッセージを呼び出します。
Traceback (most recent call last):
File "/usr/local/bin/pip3", line 7, in <module>
from pip import main
File "/usr/local/lib/python3.5/dist-packages/pip/__init__.py", line 26, in <module>
from pip.utils import get_installed_distributions, get_prog
File "/usr/local/lib/python3.5/dist-packages/pip/utils/__init__.py", line 27, in <module>
from pip._vendor import pkg_resources
File "/usr/local/lib/python3.5/dist-packages/pip/_vendor/pkg_resources/__init__.py", line 3018, in <module>
@_call_aside
File "/usr/local/lib/python3.5/dist-packages/pip/_vendor/pkg_resources/__init__.py", line 3004, in _call_aside
f(*args, **kwargs)
File "/usr/local/lib/python3.5/dist-packages/pip/_vendor/pkg_resources/__init__.py", line 3046, in _initialize_master_working_set
dist.activate(replace=False)
File "/usr/local/lib/python3.5/dist-packages/pip/_vendor/pkg_resources/__init__.py", line 2578, in activate
declare_namespace(pkg)
File "/usr/local/lib/python3.5/dist-packages/pip/_vendor/pkg_resources/__init__.py", line 2152, in declare_namespace
_handle_ns(packageName, path_item)
File "/usr/local/lib/python3.5/dist-packages/pip/_vendor/pkg_resources/__init__.py", line 2092, in _handle_ns
_rebuild_mod_path(path, packageName, module)
File "/usr/local/lib/python3.5/dist-packages/pip/_vendor/pkg_resources/__init__.py", line 2121, in _rebuild_mod_path
orig_path.sort(key=position_in_sys_path)
AttributeError: '_NamespacePath' object has no attribute 'sort
さらに、Ubuntuのソフトウェアアップデーターが機能しなくなりました。 この問題と のように見えますが、pip
が機能しないため、ソリューションのみが機能しません。しかし、pip
の問題が解決されると、Software Updaterの問題はなくなると思います。
私はこれまでのところ、同様の問題があるスレッドから次のコマンドを試してみました
Sudo apt-get update
Sudo apt-get upgrade
Sudo apt-get -f install
Sudo apt-get install --reinstall aptdaemon
Sudo rm -rvf /var/lib/apt/lists/*
Sudo apt install --reinstall python3-pip
そして、明らかにpip
コマンドは機能しません。
Sudo pip3 install --upgrade pip setuptools wheel
pip3 install --upgrade pip
pip3 install --upgrade setuptools
私の問題を解決した答え のように見えましたが、それは長い目で見れば大した役には立たない大胆な方法です。ディレクトリ全体を削除するのは、おそらく最もエレガントな方法ではありません。
Sudo rm -rf /usr/local/lib/python3.5/dist-packages
その後、pipはインストールされなかったので、再インストールしました
Sudo apt-get update
Sudo apt-get install python3-pip
pip
は正常に機能しており、Software Updaterの問題も予想どおりに解決されました。この「解決策」は機能しますが、matplotlib
のような多くのライブラリを削除します。これらは後で再インストールする必要があります。しかし、matplotlib
2.1.2を再インストールすると、同じpip
エラーが発生しました。このアプローチは本当にお勧めできません。
tl; dr:これをしないでください。
正方形に戻ります。問題を解決したのは、pip
とそれに続くすべてのライブラリをSudo -H
で再インストールすることでした。
Sudo -H apt install --reinstall python3-pip
-H
フラグがない場合、matplotlib
をインストールすると、同じpip
問題が発生しました。しかし、それでもエラーメッセージは表示されます。解決策は この変更 発信 ここ のようです。
このファイルの2121行目から2122行目を編集しました。
/usr/local/lib/python3.5/dist-packages/pip/_vendor/pkg_resources/__ init__.py
#orig_path.sort(key=position_in_sys_path)
#module.__path__[:] = [_normalize_cached(p) for p in orig_path]
orig_path_t = list(orig_path)
orig_path_t.sort(key=position_in_sys_path)
module.__path__[:] = [_normalize_cached(p) for p in orig_path_t]
これによりpip/pip3が復活し、モジュールをインストールすることができました。これまでのところ、すべてが機能しています。これが最後になることを期待しましょう。
編集:1週間後、問題は再浮上していないので、これを承認済みの回答としてマークします。
編集2:pip
更新により問題が復活しました。一見、更新プログラムによって変更が上書きされたようです。それを再度導入し、異常な動作を取り除くことは問題ありませんでした。