Windows10 CMD运行Python2.7.16导入scipy.py遇相对导入错误求助
修复"Attempted relative import in non-package"错误的方案
核心原因分析
你遇到的问题根源其实很典型:你自己创建了一个名为scipy.py的文件,还把它放在了Python的安装根目录C:\Python27下。当你执行脚本尝试导入scipy时,Python会优先搜索当前路径和sys.path里的文件,结果先找到了你自己写的scipy.py,而不是真正的第三方scipy库。这个自定义文件里的相对导入语句from .python import string_types在非包结构下是不允许的,所以直接抛出了错误。
具体修复步骤
- 第一步:处理冲突的自定义文件
找到C:\Python27\scipy.py,要么把它重命名成和第三方库不冲突的名字(比如my_scipy_helper.py),要么直接删除它——记住,永远不要让你的脚本文件名和标准库、第三方库同名,这是Python编程里的常见坑。 - 第二步:清理残留的编译文件
检查同一个目录下有没有scipy.pyc(Python编译生成的字节码文件),如果有的话也一起删掉,不然Python可能还会加载旧的编译缓存。 - 第三步:验证修复效果
打开CMD,输入python进入交互模式,执行import scipy,如果没有报错,再尝试运行你的目标.py文件,应该就能正常导入scipy库和相关内容了。
额外提醒
- 不要把自己的脚本直接放在Python安装目录下,建议专门创建项目文件夹来存放代码,避免污染全局环境。
- 在Python 2.7里,
string_types其实是types.StringTypes,或者可以直接用内置的basestring类型,如果是你自己的代码需要用到,也可以直接从types模块导入,不用依赖scipy的内部结构。
内容的提问来源于stack exchange,提问作者Biomed_ESR
相关产品推荐
相关产品推荐

