pip install pyspectra 找不到现有的 numpy 安装

问题描述 投票:0回答:1

我想用 Python 分析近红外 (NIR) 光谱。我的光谱以 spc 文件格式 存储。所以我需要一个可以导入此类文件的工具。 “Pyspectra”似乎是一个很好的模块。但是,我无法在 Windows 10 计算机上使用 Python 3.12.5 和 pip 24.2 将其安装在全新的虚拟环境中。

pip install pyspectra
失败并显示错误消息:
获取构建轮子的要求未成功运行”。

回溯的最后一行指出:
ModuleNotFoundError:没有名为“numpy”的模块

我使用

pip install numpy
安装了 numpy,并验证它可以与
import numpy as np
一起使用。这里没问题。我还确保我位于希望安装 pyspectra 的同一个虚拟环境中。

但我仍然无法导入 pyspectra。 Pip 继续声称它找不到 numpy。

这可能是“pyspectra 0.0.1.2”和“numpy 2.1.2”之间的依赖问题吗?


供参考:这是我在Windows命令行上的代码

# Create and activate a virtual environment
C:\user\...\Desktop>python -m venv venv
C:\user\...\Desktop>venv\scripts\activate

# Import numpy (to make sure it is installed)
(venv) C:\user\...\Desktop>py -m pip install numpy

# Import pyspectra
(venv) C:\user\...\Desktop>py -m pip install pyspectra
Collecting pyspectra
  Using cached pyspectra-0.0.1.2-py3-none-any.whl.metadata (12 kB)
Requirement already satisfied: numpy in c:\users\...\venv\lib\site-packages (from pyspectra) (2.1.2)
Collecting pandas (from pyspectra)
  Using cached pandas-2.2.3-cp312-cp312-win_amd64.whl.metadata (19 kB)
Collecting spc-spectra (from pyspectra)
  Using cached spc_spectra-0.4.0.tar.gz (8.6 kB)
  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
  ╰─> [24 lines of output]
      Traceback (most recent call last):
        [...]
        File "C:\Users\...\AppData\Local\Temp\pip-install-v_qa0rxl\spc-spectra_a351371d52ef45edbd585ef2843e5c1e\spc_spectra\spc.py", line 10, in <module>
          import numpy as np
      ModuleNotFoundError: No module named 'numpy'
      [end of output]

编辑:重写问题以使其更容易理解。

python import modulenotfounderror
1个回答
0
投票

我自己想出来了。我回答我自己的问题,以防其他人尝试从 Python 中的 SPC 文件导入近红外光谱。这也可以作为一个有启发性的示例,说明如果有人从使用 R 进行数据科学转向使用 Python 而不了解 R 的 CRAN 和 Python 的 PyPI 软件存储库之间的区别,会发生什么情况。


TL;DR:“PySpectra”已过时。使用“pyfasma-spc”代替。

问题
尽管与 numpy 无关,但这确实是一个不兼容问题。

PySpectra 需要安装“spc-spectra”。 spc-spectra 的 setup.py 文件与 Pip 版本 24.2 不兼容。我通过将 setup.py 的内容替换为以下代码,成功安装了该包的本地副本:

import setuptools

if __name__ == "__main__":
    setuptools.setup()

然后我就可以通过

pip install -e /.../spc_spectra-0.4.0
安装该软件包。之后我也可以执行
pip install pyspectra
而不会出现错误。

根本问题
重要的是要了解 R 的 CRAN 存储库和 Python 的 PyPI 的工作方式不同:

  • CRAN 在接受包裹之前有严格的指导方针和检查。每次发布新版本的 R 时,它都会重复这些检查,并归档未通过检查的包。
  • PyPI 在接受新包时更加宽松。仅当开发人员删除软件包或有人发出问题信号时,软件包才会被删除。

如果您有一个新任务(例如导入 SPC 文件)并简单地 pip install 您在 PyPI 上看到的下一个最佳软件包,您可能会面临安装过时代码或(在极少数情况下)甚至是完全恶意代码的风险。

PySpectra 于 2020 年发布,此后没有收到任何更新。所需的 spc-spectra 软件包已于 2018 年发布,并且尚未收到任何更新。可以肯定地假设这两个软件包都不再被积极维护。

好消息是:Python 中有一个用于处理 SPC 文件的更新包:pyfasma-spc

该软件包有详细记录,最后更新于 2024 年。使用 Pip 版本 24.2 进行安装即可。从 SPC 文件导入数据在我的计算机上运行良好。

© www.soinside.com 2019 - 2024. All rights reserved.