安装anomalib的依赖项pathtools出现报错:ModuleNotFoundError: No module named ‘imp‘

报错场景:

pip一键安装异常检测库及其依赖的时候,出现报错:

pip install anomalib
pip install anomalib[full]

报错信息:

Collecting pathtools (from wandb<=0.15.9,>=0.12.17->anomalib[full])
  Downloading pathtools-0.1.2.tar.gz (11 kB)
  Preparing metadata (setup.py) ... error
  error: subprocess-exited-with-error
  
  × python setup.py egg_info did not run successfully.
  │ exit code: 1
  ╰─> [6 lines of output]
      Traceback (most recent call last):
        File "", line 2, in <module>
        File "", line 34, in <module>
        File "/tmp/pip-install-x0ebyavt/pathtools_01210921b14643738614d9f1f8f7ddd5/setup.py", line 25, in <module>
          import imp
      ModuleNotFoundError: No module named 'imp'
      [end of output]
  
  note: This error originates from a subprocess, and is likely not a problem with pip.
error: metadata-generation-failed

× Encountered error while generating package metadata.
╰─> See above for output.

note: This is an issue with the package mentioned above, not pip.
hint: See above for details.
(base) lyj@user-SYS-4029GP-TRT:~$ pip install imp
Defaulting to user installation because normal site-packages is not writeable
Looking in indexes: https://pypi.o

报错原因

anomalib需要安装pathtools,同时pathtools在安装时需要安装并调用imp依赖;而imp早在python3.4过后就已经弃用改为importlib,anomalib需要python≥3.10,因此报错。

解决方案

  1. 手动下载pathtools源码:pathtools 源码下载链接
  2. 解压源码文件
tar -xzf pathtools-0.1.2.tar.gz
cd pathtools-0.1.2
  1. 修改setup.py
# import imp				源代码
import importlib			# 改动后


# version = imp.load_source('version',		源代码
#                          os.path.join(PKG_DIR, 'version.py'))


version = importlib.machinery.SourceFileLoader('version', os.path.join(PKG_DIR, 'version.py')).load_module()		# 改动后

保存修改
4. pip安装改动后的pathtools源码
pathtools-0.1.2文件夹内运行:

pip install .

安装pathtools成功

问题解决!

你可能感兴趣的:(python,pip)