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

2025-01-09 08:46:00
admin
原创
23
摘要:问题描述:之前我安装了一些软件包,比如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 不兼容,一切运行顺利

相关推荐
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   984  
  在项目管理领域,CDCP(Certified Data Center Professional)认证评审是一个至关重要的环节,它不仅验证了项目团队的专业能力,还直接关系到项目的成功与否。在这一评审过程中,沟通技巧的运用至关重要。有效的沟通不仅能够确保信息的准确传递,还能增强团队协作,提升评审效率。本文将深入探讨CDCP...
华为IPD流程   0  
  IPD(Integrated Product Development,集成产品开发)是一种以客户需求为核心、跨部门协同的产品开发模式,旨在通过高效的资源整合和流程优化,提升产品开发的成功率和市场竞争力。在IPD培训课程中,掌握关键成功因素是确保团队能够有效实施这一模式的核心。以下将从五个关键成功因素展开讨论,帮助企业和...
IPD项目流程图   0  
  华为IPD(Integrated Product Development,集成产品开发)流程是华为公司在其全球化进程中逐步构建和完善的一套高效产品开发管理体系。这一流程不仅帮助华为在技术创新和产品交付上实现了质的飞跃,还为其在全球市场中赢得了显著的竞争优势。IPD的核心在于通过跨部门协作、阶段性评审和市场需求驱动,确保...
华为IPD   0  
  华为作为全球领先的通信技术解决方案提供商,其成功的背后离不开一套成熟的管理体系——集成产品开发(IPD)。IPD不仅是一种产品开发流程,更是一种系统化的管理思想,它通过跨职能团队的协作、阶段评审机制和市场需求驱动的开发模式,帮助华为在全球市场中脱颖而出。从最初的国内市场到如今的全球化布局,华为的IPD体系在多个领域展现...
IPD管理流程   0  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

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

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

内置subversion和git源码管理

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

免费试用