wrapt: regression with python3.7: AttributeError: 'zipimport.zipimporter' object has no attribute 'create_module'

After updating to wrapt 1.14.0, I started seeing issues with pip installs on python3.7:


Installing build dependencies: started
Installing build dependencies: finished with status 'error'
error: subprocess-exited-with-error

× pip subprocess to install build dependencies did not run successfully.
│ exit code: 1
╰─> [58 lines of output]
    Traceback (most recent call last):
      File "/opt/miniconda/envs/foo/lib/python3.7/runpy.py", line 193, in _run_module_as_main
        "__main__", mod_spec)
      File "/opt/miniconda/envs/foo/lib/python3.7/runpy.py", line 85, in _run_code
        exec(code, run_globals)
      File "/tmp/pip-standalone-pip-8p809dqm/__env_pip__.zip/pip/__main__.py", line 29, in <module>
      File "<frozen importlib._bootstrap>", line 983, in _find_and_load
      File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
      File "<frozen importlib._bootstrap>", line 668, in _load_unlocked
      File "<frozen importlib._bootstrap>", line 638, in _load_backward_compatible
      File "/tmp/pip-standalone-pip-8p809dqm/__env_pip__.zip/pip/_internal/cli/main.py", line 9, in <module>
      File "<frozen importlib._bootstrap>", line 983, in _find_and_load
      File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
      File "<frozen importlib._bootstrap>", line 668, in _load_unlocked
      File "<frozen importlib._bootstrap>", line 638, in _load_backward_compatible
      File "/tmp/pip-standalone-pip-8p809dqm/__env_pip__.zip/pip/_internal/cli/autocompletion.py", line 10, in <module>
      File "<frozen importlib._bootstrap>", line 983, in _find_and_load
      File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
      File "<frozen importlib._bootstrap>", line 668, in _load_unlocked
      File "<frozen importlib._bootstrap>", line 638, in _load_backward_compatible
      File "/tmp/pip-standalone-pip-8p809dqm/__env_pip__.zip/pip/_internal/cli/main_parser.py", line 8, in <module>
      File "<frozen importlib._bootstrap>", line 983, in _find_and_load
      File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
      File "<frozen importlib._bootstrap>", line 668, in _load_unlocked
      File "<frozen importlib._bootstrap>", line 638, in _load_backward_compatible
      File "/tmp/pip-standalone-pip-8p809dqm/__env_pip__.zip/pip/_internal/cli/cmdoptions.py", line 23, in <module>
      File "<frozen importlib._bootstrap>", line 983, in _find_and_load
      File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
      File "<frozen importlib._bootstrap>", line 668, in _load_unlocked
      File "<frozen importlib._bootstrap>", line 638, in _load_backward_compatible
      File "/tmp/pip-standalone-pip-8p809dqm/__env_pip__.zip/pip/_internal/cli/parser.py", line 12, in <module>
      File "<frozen importlib._bootstrap>", line 983, in _find_and_load
      File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
      File "<frozen importlib._bootstrap>", line 668, in _load_unlocked
      File "<frozen importlib._bootstrap>", line 638, in _load_backward_compatible
      File "/tmp/pip-standalone-pip-8p809dqm/__env_pip__.zip/pip/_internal/configuration.py", line 20, in <module>
      File "<frozen importlib._bootstrap>", line 983, in _find_and_load
      File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
      File "<frozen importlib._bootstrap>", line 668, in _load_unlocked
      File "<frozen importlib._bootstrap>", line 638, in _load_backward_compatible
      File "/tmp/pip-standalone-pip-8p809dqm/__env_pip__.zip/pip/_internal/exceptions.py", line 13, in <module>
      File "<frozen importlib._bootstrap>", line 983, in _find_and_load
      File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
      File "<frozen importlib._bootstrap>", line 668, in _load_unlocked
      File "<frozen importlib._bootstrap>", line 638, in _load_backward_compatible
      File "/tmp/pip-standalone-pip-8p809dqm/__env_pip__.zip/pip/_vendor/requests/__init__.py", line 135, in <module>
      File "<frozen importlib._bootstrap>", line 983, in _find_and_load
      File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
      File "<frozen importlib._bootstrap>", line 668, in _load_unlocked
      File "<frozen importlib._bootstrap>", line 638, in _load_backward_compatible
      File "/tmp/pip-standalone-pip-8p809dqm/__env_pip__.zip/pip/_vendor/requests/utils.py", line 27, in <module>
      File "<frozen importlib._bootstrap>", line 983, in _find_and_load
      File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
      File "<frozen importlib._bootstrap>", line 670, in _load_unlocked
      File "<frozen importlib._bootstrap>", line 583, in module_from_spec
      File "/opt/miniconda/envs/shrek/lib/python3.7/site-packages/wrapt/importer.py", line 166, in create_module
        return self.loader.create_module(spec)
    AttributeError: 'zipimport.zipimporter' object has no attribute 'create_module'
    [end of output]

I assume it could be due to: https://github.com/GrahamDumpleton/wrapt/commit/53323ba4b92f88dab5a8ec3262a1c1f1e979a3e2

which introduced this code:

    def create_module(self, spec):
         return self.loader.create_module(spec)

However, the zipimporter module’s create_module function was only added in python 3.10: https://docs.python.org/3/library/zipimport.html#zipimport.zipimporter.create_module

Reverting wrapt to 1.13.3 resolved the pip issues again.

About this issue

  • Original URL
  • State: closed
  • Created 2 years ago
  • Reactions: 1
  • Comments: 18 (9 by maintainers)

Most upvoted comments

Fix released in 1.14.1.