LoginSignup
4
1

More than 5 years have passed since last update.

pipでAttributeError: _versionが出たときの対応

Posted at

気がつけばpip installpip freezeでエラーが出るようになったので対応した。

  • pip 19.0.1
  • Python 3.6.6

エラーは以下の通り。

$ pip freeze
Exception:
Traceback (most recent call last):
  File "/Users/yag_ays/.pyenv/versions/main/lib/python3.6/site-packages/pip/_vendor/pkg_resources/__init__.py", line 2584, in version
    return self._version
  File "/Users/yag_ays/.pyenv/versions/main/lib/python3.6/site-packages/pip/_vendor/pkg_resources/__init__.py", line 2691, in __getattr__
    raise AttributeError(attr)
AttributeError: _version

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/yag_ays/.pyenv/versions/main/lib/python3.6/site-packages/pip/_internal/cli/base_command.py", line 176, in main
    status = self.run(options, args)
  File "/Users/yag_ays/.pyenv/versions/main/lib/python3.6/site-packages/pip/_internal/commands/freeze.py", line 93, in run
    for line in freeze(**freeze_kwargs):
  File "/Users/yag_ays/.pyenv/versions/main/lib/python3.6/site-packages/pip/_internal/operations/freeze.py", line 62, in freeze
    req = FrozenRequirement.from_dist(dist)
  File "/Users/yag_ays/.pyenv/versions/main/lib/python3.6/site-packages/pip/_internal/operations/freeze.py", line 239, in from_dist
    req = dist.as_requirement()
  File "/Users/yag_ays/.pyenv/versions/main/lib/python3.6/site-packages/pip/_vendor/pkg_resources/__init__.py", line 2716, in as_requirement
    if isinstance(self.parsed_version, packaging.version.Version):
  File "/Users/yag_ays/.pyenv/versions/main/lib/python3.6/site-packages/pip/_vendor/pkg_resources/__init__.py", line 2551, in parsed_version
    self._parsed_version = parse_version(self.version)
  File "/Users/yag_ays/.pyenv/versions/main/lib/python3.6/site-packages/pip/_vendor/pkg_resources/__init__.py", line 2589, in version
    raise ValueError(tmpl % self.PKG_INFO, self)
ValueError: ("Missing 'Version:' header and/or METADATA file", Unknown [unknown version] (/Users/yag_ays/.pyenv/versions/3.6.6/envs/main/lib/python3.6/site-packages))

調べてみると、どうやら-から始まるディレクトリが生成されているとエラーが出るようだ。

pip19.0.1 list error"AttributeError: _version" · Issue #6194 · pypa/pip

実際に上記のログを元にpyenvのsite-packagesに行くと、謎の-umpyというディレクトリが存在した。おそらくNumpyをインストール/アップデートするときに生じたゴミと思われる。

$ cd /Users/yag_ays/.pyenv/versions/main/lib/python3.6/site-packages
$ ls 
total 19112
drwxr-xr-x    3 yag_ays  Users       96  1 24 11:33 -umpy
drwxr-xr-x    3 yag_ays  Users       96  1 24 11:33 -umpy-1.15.1.dist-info
[...]

なので、これを別名に書き換えることで解決。

# ハイフンから始まるファイルを別名に置き換える
$ mv ./-umpy umpy
$ mv ./-umpy-1.15.1.dist-info/ umpy-1.15.1.dist-info
$ pip freeze
absl-py==0.5.0
aiofiles==0.4.0
alabaster==0.7.12
[...]
4
1
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
1