---
slug: "python-pipenv-attributeerror-pkgutil-impimporter-zipimporter"
title: "pipenv install で AttributeError: module 'pkgutil' has no attribute 'ImpImporter'. Did you mean: 'zipimporter'? が出た → まずは pipenv の python バージョンを確認"
description: "Python3.12 環境を構築するため、Pipenv で仮想環境を新しく構築している際、`pipenv install` をした時に AttributeError: module 'pkgutil' has no attribute 'ImpImporter'. Did you mean: 'zipimporter'? エラーが出る場合の確認事項と対応方法"
url: "https://www.ytyng.com/blog/python-pipenv-attributeerror-pkgutil-impimporter-zipimporter"
publish_date: "2024-03-24T04:53:50Z"
created: "2024-03-24T04:53:50Z"
updated: "2026-04-20T01:19:09.059Z"
categories: ["Django", "Python"]
keywords: ""
featured_image_url: "https://media.ytyng.com/resize/20250611/78dfc956d1b846a28e6a5dd9be293079.png.webp?width=768"
has_video: true
has_music: true
video_urls: ["https://media.ytyng.net/ytyng-blog/303/featured-video-1.mp4", "https://media.ytyng.net/ytyng-blog/303/featured-video-2.mp4", "https://media.ytyng.net/ytyng-blog/303/featured-video-3.mp4"]
music_urls: ["https://media.ytyng.net/ytyng-blog/303/featured-music-303-3.mp3", "https://media.ytyng.net/ytyng-blog/303/featured-music-303-4.mp3"]
lang: "ja"
---

# pipenv install で AttributeError: module 'pkgutil' has no attribute 'ImpImporter'. Did you mean: 'zipimporter'? が出た → まずは pipenv の python バージョンを確認

Python3.12 環境を構築するため、Pipenv で仮想環境を新しく構築している際、`pipenv install` をした時に下記のエラーが出た。

```
Traceback (most recent call last):
  File "<my-env>/.venv/bin/pip", line 5, in <module>
    from pip._internal.cli.main import main
  File "<my-env>/.venv/lib/python3.12/site-packages/pip/_internal/cli/main.py", line 9, in <module>
    from pip._internal.cli.autocompletion import autocomplete
  File "<my-env>/.venv/lib/python3.12/site-packages/pip/_internal/cli/autocompletion.py", line 10, in <module>
    from pip._internal.cli.main_parser import create_main_parser
  File "<my-env>/.venv/lib/python3.12/site-packages/pip/_internal/cli/main_parser.py", line 8, in <module>
    from pip._internal.cli import cmdoptions
  File "<my-env>/.venv/lib/python3.12/site-packages/pip/_internal/cli/cmdoptions.py", line 23, in <module>
    from pip._internal.cli.parser import ConfigOptionParser
  File "<my-env>/.venv/lib/python3.12/site-packages/pip/_internal/cli/parser.py", line 12, in <module>
    from pip._internal.configuration import Configuration, ConfigurationError
  File "<my-env>/.venv/lib/python3.12/site-packages/pip/_internal/configuration.py", line 20, in <module>
    from pip._internal.exceptions import (
  File "<my-env>/.venv/lib/python3.12/site-packages/pip/_internal/exceptions.py", line 7, in <module>
    from pip._vendor.pkg_resources import Distribution
  File "<my-env>/.venv/lib/python3.12/site-packages/pip/_vendor/pkg_resources/__init__.py", line 2164, in <module>
    register_finder(pkgutil.ImpImporter, find_on_path)
                    ^^^^^^^^^^^^^^^^^^^
AttributeError: module 'pkgutil' has no attribute 'ImpImporter'. Did you mean: 'zipimporter'?
```

この場合、おそらく
```shell
% python3 -m ensurepip --upgrade
```
をすれば解決する。システムグローバルの python 環境と仮想環境内で両方やっておいたほうが良い。

ただ、そもそも pipenv の環境がおかしかったので pipenv の作り直しをした。

# システム環境の確認

## python3 のデフォルトバージョンの確認 (Mac)
仮想環境(venv)に入っていない状態で
```shell
% which python3
/opt/homebrew/bin/python3

% python3 --version
Python 3.11.6
```

`/opt/homebrew/bin/python3` が使われ、 python3.11 だった。

## pipenv の使用する python のバージョンの確認
仮想環境(venv)に入っていない状態で
```shell
% which pipenv
/opt/homebrew/bin/pipenv

% head /opt/homebrew/bin/pipenv
#!/opt/homebrew/opt/python@3.9/bin/python3.9
# -*- coding: utf-8 -*-
import re
import sys
from pipenv import cli
...
```

pipenv は python3.9 を使うようになっていた。

pipen が使う python3 と、デフォルトの python バージョンが違っていて面倒が発生しそうなのでで、pipenv でデフォルトの python3.11 を使うようにする。


# システムグローバルの pipenv の再インストール

## homebrew でアンインストールしてみる
```shell
% brew uninstall pipenv
Error: No such keg: /opt/homebrew/Cellar/pipenv
```

homebrew でインストールされてるものではなかった

## ファイルを消す
おそらく、python3.9 の pip でインストールされていると考えられる。

後から考えれば、
```shell
% /opt/homebrew/opt/python@3.9/bin/python3.9 -m pip uninstall pipenv
```
するときれいにアンインストールできたのかもしれないが、どうせこの後 Python3.11 環境で作り直されると思ったので、雑に rm した。

```shell
% rm /opt/homebrew/bin/pipenv
```

## システムグローバル環境のデフォルトのpython3 で pipenv をインストールしなおす

```shell
% python3 -m pip install pipenv
```

## インストール結果の確認

```shell
% which pipenv
/opt/homebrew/bin/pipenv
```

さきほど削除したファイルが再生成されている。期待通り。
```shell
% head /opt/homebrew/bin/pipenv
#!/opt/homebrew/opt/python@3.11/bin/python3.11
# -*- coding: utf-8 -*-
import re
import sys
from pipenv import cli
...
```
python3.11 を使うようになっていた。期待通り。

## 念の為 システムグローバルの python 環境で ensurepip upgrade しておく
```shell
% python3 -m ensurepip --upgrade
```

# 仮想環境の構築

python3.12 環境の pipenv 環境構築の覚書

### Pipflie
```
[[source]]
name = "pypi"
url = "https://pypi.org/simple"
verify_ssl = true

[dev-packages]

[packages]


[requires]
python_version = "3.12"
```

このファイルを作ってから
```shell
% python3 -m pipenv install
```

※ `head $(which pipenv)` の1行目(shebang)が `which python3` の結果の python のパスと一致している限り、
```shell
% pipenv install
```
でも同じ。

## 仮想環境内に入る

```shell
% python3 -m pipenv shell
```

## 仮想環境内での pip のテスト

仮想環境内で、
```shell
python3 -m pip freeze
```
とか

```shell
pip freeze
```
をしてみて、エラーが出ないかを確認する。

もし、

```
  File "<my-env>/.venv/lib/python3.12/site-packages/pip/_internal/cli/main_parser.py", line 8, in <module>
    from pip._internal.cli import cmdoptions
  File "<my-env>/.venv/lib/python3.12/site-packages/pip/_internal/cli/cmdoptions.py", line 23, in <module>
    from pip._internal.cli.parser import ConfigOptionParser
  File "<my-env>/.venv/lib/python3.12/site-packages/pip/_internal/cli/parser.py", line 12, in <module>
    from pip._internal.configuration import Configuration, ConfigurationError
  File "<my-env>/.venv/lib/python3.12/site-packages/pip/_internal/configuration.py", line 20, in <module>
    from pip._internal.exceptions import (
  File "<my-env>/.venv/lib/python3.12/site-packages/pip/_internal/exceptions.py", line 7, in <module>
    from pip._vendor.pkg_resources import Distribution
  File "<my-env>/.venv/lib/python3.12/site-packages/pip/_vendor/pkg_resources/__init__.py", line 2164, in <module>
    register_finder(pkgutil.ImpImporter, find_on_path)
                    ^^^^^^^^^^^^^^^^^^^
AttributeError: module 'pkgutil' has no attribute 'ImpImporter'. Did you mean: 'zipimporter'?
```

このエラーが出るなら、仮想環境に入っている状態で

```shell
% python3 -m ensurepip --upgrade
```

をしてみる。
