AttributeError:模块“pkgutil”没有属性“ImpImporter”。您的意思是“zipimporter”吗?

2025-01-09 08:46:00
admin
原创
230
摘要:问题描述:之前我安装了一些软件包,比如Matplotlib、NumPy、 pip (版本 23.3.1)、 wheel (版本 0.41.2) 等,并用它们进行了一些编程。我使用命令C:UsersUserName>pip list查找已安装的软件包列表,我使用的是 Python 3.12.0(通过使用代...

问题描述:

之前我安装了一些软件包,比如Matplotlib、NumPy、 pip (版本 23.3.1)、 wheel (版本 0.41.2) 等,并用它们进行了一些编程。我使用命令C:UsersUserName>pip list查找已安装的软件包列表,我使用的是 Python 3.12.0(通过使用代码C:UsersUserName>py -V)。

我需要使用pyspedas来分析一些数据。我按照从网站收到的说明安装该软件包,但有一个变化(我不确定这是否重要:我使用的是py,而不是python)。我使用的命令顺序如下:

py -m venv pyspedas
.pyspedasScriptsactivate
pip install pyspedas

完成最后一步后,我得到了以下输出:

Collecting pyspedas
  Using cached pyspedas-1.4.47-py3-none-any.whl.metadata (14 kB)
Collecting numpy>=1.19.5 (from pyspedas)
  Using cached numpy-1.26.1-cp312-cp312-win_amd64.whl.metadata (61 kB)
Collecting requests (from pyspedas)
  Using cached requests-2.31.0-py3-none-any.whl.metadata (4.6 kB)
Collecting geopack>=1.0.10 (from pyspedas)
  Using cached geopack-1.0.10-py3-none-any.whl (114 kB)
Collecting cdflib<1.0.0 (from pyspedas)
  Using cached cdflib-0.4.9-py3-none-any.whl (72 kB)
Collecting cdasws>=1.7.24 (from pyspedas)
  Using cached cdasws-1.7.43.tar.gz (21 kB)
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Preparing metadata (pyproject.toml) ... done
Collecting netCDF4>=1.6.2 (from pyspedas)
  Using cached netCDF4-1.6.5-cp312-cp312-win_amd64.whl.metadata (1.8 kB)
Collecting pywavelets (from pyspedas)
  Using cached PyWavelets-1.4.1.tar.gz (4.6 MB)
  Installing build dependencies ... done
  Getting requirements to build wheel ... error
  error: subprocess-exited-with-error

  × Getting requirements to build wheel did not run successfully.
  │ exit code: 1
  ╰─> [33 lines of output]
      Traceback (most recent call last):
        File "C:UsersUserNamepyspedasLibsite-packagespip_vendorpyproject_hooks_in_process_in_process.py", line 353, in <module>
          main()
        File "C:UsersUserNamepyspedasLibsite-packagespip_vendorpyproject_hooks_in_process_in_process.py", line 335, in main
          json_out['return_val'] = hook(**hook_input['kwargs'])
                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "C:UsersUserNamepyspedasLibsite-packagespip_vendorpyproject_hooks_in_process_in_process.py", line 112, in get_requires_for_build_wheel
          backend = _build_backend()
                    ^^^^^^^^^^^^^^^^
        File "C:UsersUserNamepyspedasLibsite-packagespip_vendorpyproject_hooks_in_process_in_process.py", line 77, in _build_backend
          obj = import_module(mod_path)
                ^^^^^^^^^^^^^^^^^^^^^^^
        File "C:UsersUserNameAppDataLocalProgramsPythonPython312Libimportlib__init__.py", line 90, in import_module
          return _bootstrap._gcd_import(name[level:], package, level)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "<frozen importlib._bootstrap>", line 1381, in _gcd_import
        File "<frozen importlib._bootstrap>", line 1354, in _find_and_load
        File "<frozen importlib._bootstrap>", line 1304, in _find_and_load_unlocked
        File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed
        File "<frozen importlib._bootstrap>", line 1381, in _gcd_import
        File "<frozen importlib._bootstrap>", line 1354, in _find_and_load
        File "<frozen importlib._bootstrap>", line 1325, in _find_and_load_unlocked
        File "<frozen importlib._bootstrap>", line 929, in _load_unlocked
        File "<frozen importlib._bootstrap_external>", line 994, in exec_module
        File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed
        File "C:UsersUserNameAppDataLocalTemppip-build-env-_lgbq70yoverlayLibsite-packagessetuptools__init__.py", line 16, in <module>
          import setuptools.version
        File "C:UsersUserNameAppDataLocalTemppip-build-env-_lgbq70yoverlayLibsite-packagessetuptoolsersion.py", line 1, in <module>
          import pkg_resources
        File "C:UsersUserNameAppDataLocalTemppip-build-env-_lgbq70yoverlayLibsite-packagespkg_resources__init__.py", line 2191, in <module>
          register_finder(pkgutil.ImpImporter, find_on_path)
                          ^^^^^^^^^^^^^^^^^^^
      AttributeError: module 'pkgutil' has no attribute 'ImpImporter'. Did you mean: 'zipimporter'?
      [end of output]

  note: This error originates from a subprocess, and is likely not a problem with pip.
error: subprocess-exited-with-error

× Getting requirements to build wheel did not run successfully.
│ exit code: 1
╰─> See above for output.

note: This error originates from a subprocess, and is likely not a problem with pip.

经过一番谷歌搜索,我发现这个问题在多个地方都有报告,但没有一个是针对这个包的。我确实按照这里的答案在新环境中安装了 wheel ,但问题仍然存在。

我没有设置虚拟环境,而是直接执行了命令py -m pip install pyspedas。但仍然出现错误。

据我所知,该程序存在一个问题

Collecting pywavelets (from pyspedas)
  Using cached PyWavelets-1.4.1.tar.gz (4.6 MB)
  Installing build dependencies ... done

我在 Windows 11 中使用IDLE。


解决方案 1:

由于删除了长期弃用的 pkgutil.ImpImporter 类,pip 命令可能不适用于Python 3.12

你只需手动安装 pip for Python 3.12

python -m ensurepip --upgrade
python -m pip install --upgrade setuptools
python -m pip install <module>

在您的虚拟环境中:

pip install --upgrade setuptools

Python自带了ensurepip,可以在Python环境中安装pip。

https://pip.pypa.io/en/stable/installation/

Linux/macOS终端上:

python -m ensurepip --upgrade

在Windows上:

py -m ensurepip --upgrade

另外,请确保升级 pip:

py -m pip install --upgrade pip


要在 Python 3.12 上安装 numpy,必须使用 numpy 版本 1.26.4

pip install numpy==1.26.4

https://github.com/numpy/numpy/issues/23808#issuecomment-1722440746



对于 Ubuntu

sudo apt install python3.12-dev

或者

python3.12 -m pip install --upgrade setuptools

解决方案 2:

我的问题是在 requirements.txt 中列出了旧版本的NumPy,这可能是一个显而易见的问题,但对于那些陷入困境的人来说:

检查NumPy 的较新版本。我需要将其列为:

numpy~=1.26.4

解决方案 3:

Python 已删除 中的一些以前弃用的符号。这在Python 3.12 发行说明importlib中有所提及

importlib 中许多以前弃用的清理工作现已完成:

...

  • importlib.abc.Finderpkgutil.ImpImporterpkgutil.ImpLoader已被删除。(由 Barry Warsaw 在gh-98040中贡献。)

错误消息意味着某些东西试图pkgutil.ImpImporter在软件包安装期间使用已删除的内容。这个东西可能是 pip、setuptools 或setup.py软件包本身的安装脚本。查看堆栈跟踪,升级setuptools(如果使用虚拟环境,则在虚拟环境中)应该可以解决此问题。

另请注意 3.12 中的相关发行说明条目

gh-95299:不要在使用 venv 创建的虚拟环境中预安装 setuptools。这意味着 distutils、setuptools、pkg_resources 和 easy_install 将不再默认可用;要访问这些,请pip install setuptools在激活的虚拟环境中运行。

解决方案 4:

正如其他人所评论的,问题是 Python 3.12 与 pip 的版本不兼容。

我最初的解决方案是:

python -m ensurepip --upgrade
pip3.12 install ...

想要安装的包在哪里...?

这是一个不完整的解决方案,因为我的 IDE(PyCharm)在打开其他文件时仍然会抛出同样的错误。

以下代码全局升级了 pip 版本

py -m pip install --upgrade pip

然后我刷新了我的 IDE。目前它正在运行。

进一步更新:我已经开始使用 conda 环境。

解决方案 5:

在Ubuntu 22.04 (Jammy Jellyfish)上对我有用的是安装 Python 3.12 的开发头文件。

sudo apt install python3.12-dev

此后,一切都很顺利。

其他一切都对我不起作用,因为在现有的 Python 3.12 虚拟环境中升级任何包都会导致同样的错误。安装后,两者python3.12-dev都是pip全新setuptools的。

解决方案 6:

我最近也遇到了同样的问题,因为我刚刚在venv上安装了 3.12就遇到了这个问题。上面的一些建议对我有用。作为参考,我使用 Windows 和PyCharm进行开发。

每次我尝试在这个全新的 3.12 安装上安装包时,我都会遇到相同的属性错误。为了修复它,我做了以下操作。

从 PyCharm 内部的终端:

python -m ensurepip --upgrade
python -m pip install --upgrade setuptools
python -m pip install <module>

与以前的版本相比,我注意到的一件事是,至少无论我的设置如何,python -mpip 的前缀现在都是强制性的,而以前我可以直接使用命令pip install <module>。这可能是由于我的设置不同,也可能是由于 3.12 强制执行...

解决方案 7:

对我来说,最简单的解决方案仍然是使用 Python 3.10。该项目是使用此版本的 Python 编写的,在出现此问题之前,至少还有另一个问题需要解决。

解决方案 8:

我最近也遇到了同样的问题,因为我刚刚安装了 3.12。这个解决方案对我有用。因为我的依赖包中有一个旧版本的 pandas,所以我只需要更新 Pandas 版本,因为它与 Python 3.12 不兼容,一切运行顺利

相关推荐
  政府信创国产化的10大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   1565  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1354  
  信创国产芯片作为信息技术创新的核心领域,对于推动国家自主可控生态建设具有至关重要的意义。在全球科技竞争日益激烈的背景下,实现信息技术的自主可控,摆脱对国外技术的依赖,已成为保障国家信息安全和产业可持续发展的关键。国产芯片作为信创产业的基石,其发展水平直接影响着整个信创生态的构建与完善。通过不断提升国产芯片的技术实力、产...
国产信创系统   21  
  信创生态建设旨在实现信息技术领域的自主创新和安全可控,涵盖了从硬件到软件的全产业链。随着数字化转型的加速,信创生态建设的重要性日益凸显,它不仅关乎国家的信息安全,更是推动产业升级和经济高质量发展的关键力量。然而,在推进信创生态建设的过程中,面临着诸多复杂且严峻的挑战,需要深入剖析并寻找切实可行的解决方案。技术创新难题技...
信创操作系统   27  
  信创产业作为国家信息技术创新发展的重要领域,对于保障国家信息安全、推动产业升级具有关键意义。而国产芯片作为信创产业的核心基石,其研发进展备受关注。在信创国产芯片的研发征程中,面临着诸多复杂且艰巨的难点,这些难点犹如一道道关卡,阻碍着国产芯片的快速发展。然而,科研人员和相关企业并未退缩,积极探索并提出了一系列切实可行的解...
国产化替代产品目录   28  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用