使用scipy触发ImportError: cannot import name 'int' from 'numpy'求解决
解决ImportError: cannot import name 'int' from 'numpy'问题
问题场景
Ubuntu 20.04系统,Python版本3.8.10,在PyCharm中运行统计相关代码时触发如下错误:
ImportError: cannot import name 'int' from 'numpy' (/home/tetiana/.local/lib/python3.8/site-packages/numpy/__init__.py) Full traceback looks like this: Traceback (most recent call last): File "/home/tetiana/forVScode/python/first/first_try.py", line 1, in <module> from scipy import stats File "/usr/lib/python3/dist-packages/scipy/stats/__init__.py", line 379, in <module> from .stats import * File "/usr/lib/python3/dist-packages/scipy/stats/stats.py", line 180, in <module> import scipy.special as special File "/usr/lib/python3/dist-packages/scipy/special/__init__.py", line 643, in <module> from .basic import * File "/usr/lib/python3/dist-packages/scipy/special/basic.py", line 19, in <module> from . import orthogonal File "/usr/lib/python3/dist-packages/scipy/special/orthogonal.py", line 81, in <module> from numpy import (exp, inf, pi, sqrt, floor, sin, cos, around, int, ImportError: cannot import name 'int' from 'numpy' (/home/tetiana/.local/lib/python3.8/site-packages/numpy/__init__.py) Process finished with exit code 1
运行的代码如下:
from scipy import stats import pandas as pd state = pd.read_csv('state_murder_rate_test_table.csv') state['Population'].mean() stats.trim_mean(state['Population'], 0.1) state['Population'].median()
解决方案
问题原因
系统中安装的scipy版本过旧,与当前numpy版本不兼容。老版本scipy会尝试从numpy导入int别名,但新版本numpy已经移除了这个导入项(numpy.int已被弃用,改用Python内置int或numpy.int_)。同时存在系统包(scipy在/usr/lib路径)和用户本地包(numpy在~/.local路径)的冲突问题。
修复步骤
- 卸载当前的numpy和scipy:
pip uninstall numpy scipy -y - 安装适配Python3.8的兼容版本:
这两个版本经过验证,完全支持Python3.8且互相兼容,不会出现pip install numpy==1.23.5 scipy==1.10.1int导入错误。 - 若使用PyCharm虚拟环境,确保在PyCharm内置终端执行命令,或通过File > Settings > Project: [项目名] > Python Interpreter直接安装指定版本的包,保证环境一致性。
内容的提问来源于stack exchange,提问作者joo
相关产品推荐
相关产品推荐

