LoginSignup
9
6

More than 5 years have passed since last update.

pipのエラーAttributeError: '_NamespacePath' object has no attribute 'sort'をなおした話

Last updated at Posted at 2018-04-10

はじめに

pip install hogepip listを行おうとしても以下のようなエラーが出てきたのでその対処法をまとめます。

error
tk@tk-ThinkPad-E480:~$ pip list                                                                                                                                                                            [193/193]
Traceback (most recent call last):
  File "/home/tk/anaconda3/bin/pip", line 7, in <module>
    from pip import main
  File "/home/tk/anaconda3/lib/python3.5/site-packages/pip/__init__.py", line 43, in <module>
    from pip.utils import get_installed_distributions, get_prog
  File "/home/tk/anaconda3/lib/python3.5/site-packages/pip/utils/__init__.py", line 27, in <module>
    from pip._vendor import pkg_resources
  File "/home/tk/anaconda3/lib/python3.5/site-packages/pip/_vendor/pkg_resources/__init__.py", line 3018, in <module>
    @_call_aside
  File "/home/tk/anaconda3/lib/python3.5/site-packages/pip/_vendor/pkg_resources/__init__.py", line 3004, in _call_aside
    f(*args, **kwargs)
  File "/home/tk/anaconda3/lib/python3.5/site-packages/pip/_vendor/pkg_resources/__init__.py", line 3046, in _initialize_master_working_set
    dist.activate(replace=False)
  File "/home/tk/anaconda3/lib/python3.5/site-packages/pip/_vendor/pkg_resources/__init__.py", line 2578, in activate
    declare_namespace(pkg)
  File "/home/tk/anaconda3/lib/python3.5/site-packages/pip/_vendor/pkg_resources/__init__.py", line 2152, in declare_namespace
    _handle_ns(packageName, path_item)
  File "/home/tk/anaconda3/lib/python3.5/site-packages/pip/_vendor/pkg_resources/__init__.py", line 2092, in _handle_ns
    _rebuild_mod_path(path, packageName, module)
  File "/home/tk/anaconda3/lib/python3.5/site-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 16.04.4 LTS
Python 3.5.1 :: Anaconda 4.0.0 (64-bit)
pip 9.0.3

解決方法

最初に方法を、その後にコードを書きます。

エラーが出た__init__.pyの2121〜2122行目を編集します。
自分の場合は上述のようなエラーが出たのでパスは/home/tk/anaconda3/lib/python3.5/site-packages/pip/_vendor/pkg_resources/__init__.pyになります。
下のようにもともとあったコード(2行目まで)をコメントアウトして、3〜5行目を追加します。

what_to_do
#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]

では実際にやっていきましょう。
2121行目とか見てられないので、lessを使ってorig_path.sortを検索、ハイライトさせて表示させます。

less
sudo less -p orig_path.sort /home/tk/anaconda3/lib/python3.5/site-packages/pip/_vendor/pkg_resources/__init__.py

すると該当の箇所がハイライトされた状態で__init__.pyが開かれるので、Vを押してエディターを開きます。
あとは上のように元々あった2行をコメントアウト、新たに3行を追加して終わりましょう。
エディターを終了するときはCtrl + xyで終了し、lessを終了するときはqを入力してください。

参照

9
6
1

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
9
6