在带有 pip 的 Linux 上,新的 numpy 2 似乎可以很好地与 pandas 配合使用:
$ python3 -c 'import numpy as np; print(np.__version__); import pandas as pd; print(pd.__version__)'
2.0.1
2.2.2
但是,在带有 miniconda 的 Windows 上,我得到
$ ${localappdata}/miniconda3/envs/c312/python.exe -c 'import numpy as np; print(np,np.__version__); import pandas as pd; print(pd,pd.__version__)'
<module 'numpy' from '${localappdata}\\miniconda3\\envs\\c312\\Lib\\site-packages\\numpy\\__init__.py'> 2.0.1
A module that was compiled using NumPy 1.x cannot be run in
NumPy 2.0.1 as it may crash. To support both 1.x and 2.x
versions of NumPy, modules must be compiled with NumPy 2.0.
Some module may need to rebuild instead e.g. with 'pybind11>=2.12'.
If you are a user of the module, the easiest solution will be to
downgrade to 'numpy<2' or try to upgrade the affected module.
We expect that some modules will need time to support NumPy 2.
Traceback (most recent call last): File "<string>", line 1, in <module>
File "${localappdata}\miniconda3\envs\c312\Lib\site-packages\pandas\__init__.py", line 26, in <module>
from pandas.compat import (
File "${localappdata}\miniconda3\envs\c312\Lib\site-packages\pandas\compat\__init__.py", line 27, in <module>
from pandas.compat.pyarrow import (
File "${localappdata}\miniconda3\envs\c312\Lib\site-packages\pandas\compat\pyarrow.py", line 8, in <module>
import pyarrow as pa
File "${localappdata}\miniconda3\envs\c312\Lib\site-packages\pyarrow\__init__.py", line 65, in <module>
import pyarrow.lib as _lib
AttributeError: _ARRAY_API not found
A module that was compiled using NumPy 1.x cannot be run in
NumPy 2.0.1 as it may crash. To support both 1.x and 2.x
versions of NumPy, modules must be compiled with NumPy 2.0.
Some module may need to rebuild instead e.g. with 'pybind11>=2.12'.
If you are a user of the module, the easiest solution will be to
downgrade to 'numpy<2' or try to upgrade the affected module.
We expect that some modules will need time to support NumPy 2.
Traceback (most recent call last): File "<string>", line 1, in <module>
File "${localappdata}\miniconda3\envs\c312\Lib\site-packages\pandas\__init__.py", line 49, in <module>
from pandas.core.api import (
File "${localappdata}\miniconda3\envs\c312\Lib\site-packages\pandas\core\api.py", line 9, in <module>
from pandas.core.dtypes.dtypes import (
File "${localappdata}\miniconda3\envs\c312\Lib\site-packages\pandas\core\dtypes\dtypes.py", line 24, in <module>
from pandas._libs import (
File "${localappdata}\miniconda3\envs\c312\Lib\site-packages\pyarrow\__init__.py", line 65, in <module>
import pyarrow.lib as _lib
AttributeError: _ARRAY_API not found
<module 'pandas' from '${localappdata}\\miniconda3\\envs\\c312\\Lib\\site-packages\\pandas\\__init__.py'> 2.2.2
重新安装(
conda install --force-reinstall pandas
)没有帮助。
那么,我需要做什么让 numpy2 工作?
在 Windows 上的 miniconda 环境中遇到的问题是由于
pandas
和它所依赖的库(如
pyarrow
)的二进制不兼容性导致的,这些库是在 NumPy 1.x 上编译的。简单地重新安装
pandas
可能无法解决问题,因为这取决于如何构建
pyarrow
包。
以下是解决这个问题的几种方法:
1. 使用 NumPy 1.x:
-
最简单的解决方案是像错误信息中建议的那样,在的 miniconda 环境中降级到与
pyarrow
兼容的 NumPy 版本。可以使用以下命令实现这一点:
conda install "numpy<2"
2. 升级受影响的软件包:
-
查找与 NumPy 2.x 兼容的
pyarrow
版本。可以在 https://pypi.org/project/pyarrow/ 上找到最新版本。然后,尝试升级pyarrow
:
conda install -c conda-forge "pyarrow>=11"
-
请注意,可能需要从
conda-forge
频道安装pyarrow
,因为它可能提供更新的版本。
3. 从源代码构建
pandas
和依赖项:
-
如果没有与 NumPy 2.x 兼容的预构建
pandas
或pyarrow
版本,则需要从源代码构建它们。这可能是一个更复杂的选择,需要更深入地了解构建 Python 包。需要安装必要的构建工具和依赖项,然后从源代码构建pandas
。
4. 创建一个新的 conda 环境:
- 创建一个全新的 conda 环境,并安装 NumPy 2.x 和 pandas。这将确保所有软件包都兼容,并且从一开始就使用 NumPy 2.x 构建。
conda create -n myenv python=3.9 numpy=2.0.1 pandas
conda activate myenv
一些额外的提示:
- 在尝试任何解决方案之前,请确保的 conda 环境已更新:
conda update --all
- 如果不确定要使用哪种方法,请尝试创建一个新的 conda 环境,并从头开始安装所有软件包。
希望这些解决方案能帮助解决在 Windows 上使用 NumPy 2.x 和 pandas 时遇到的问题。
标签:python,pandas,linux,numpy From: 78804536