You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

安装Scipy 1.0.0触发AssertionError报错求助

解决Scipy 1.0.0源码安装时的AssertionError问题

问题场景

  • 适配GATK软件,在conda环境中准备安装Scipy 1.0.0
  • 已按GATK提供的yml配置了Python 3.6.10和Numpy 1.17.5
  • 执行python setup.py build时触发AssertionError,报错栈如下:
f2py: build/src.linux-x86_64-3.6/scipy/linalg/flapack.pyf
Reading fortran codes...
    Reading file 'build/src.linux-x86_64-3.6/scipy/linalg/flapack.pyf' (format:free)
Traceback (most recent call last):
  File "setup.py", line 418, in <module>
    setup_package()
  File "setup.py", line 414, in setup_package
    setup(**metadata)
  File "/home/joyzheng/.conda/envs/gatk4.3/lib/python3.6/site-packages/numpy/distutils/core.py", line 171, in setup
    return old_setup(**new_attr)
  File "/home/joyzheng/.conda/envs/gatk4.3/lib/python3.6/site-packages/setuptools/__init__.py", line 153, in setup
    return distutils.core.setup(**attrs)
  File "/home/joyzheng/.conda/envs/gatk4.3/lib/python3.6/distutils/core.py", line 148, in setup
    dist.run_commands()
  File "/home/joyzheng/.conda/envs/gatk4.3/lib/python3.6/distutils/dist.py", line 955, in run_commands
    self.run_command(cmd)
  File "/home/joyzheng/.conda/envs/gatk4.3/lib/python3.6/distutils/dist.py", line 974, in run_command
    cmd_obj.run()
  File "/home/joyzheng/.conda/envs/gatk4.3/lib/python3.6/site-packages/numpy/distutils/command/build.py", line 47, in run
    old_build.run(self)
  File "/home/joyzheng/.conda/envs/gatk4.3/lib/python3.6/distutils/command/build.py", line 135, in run
    self.run_command(cmd_name)
  File "/home/joyzheng/.conda/envs/gatk4.3/lib/python3.6/distutils/cmd.py", line 313, in run_command
    self.distribution.run_command(command)
  File "/home/joyzheng/.conda/envs/gatk4.3/lib/python3.6/distutils/dist.py", line 974, in run_command
    cmd_obj.run()
  File "/home/joyzheng/.conda/envs/gatk4.3/lib/python3.6/site-packages/numpy/distutils/command/build_src.py", line 142, in run
    self.build_sources()
  File "/home/joyzheng/.conda/envs/gatk4.3/lib/python3.6/site-packages/numpy/distutils/command/build_src.py", line 159, in build_sources
    self.build_extension_sources(ext)
  File "/home/joyzheng/.conda/envs/gatk4.3/lib/python3.6/site-packages/numpy/distutils/command/build_src.py", line 319, in build_extension_sources
    sources = self.f2py_sources(sources, ext)
  File "/home/joyzheng/.conda/envs/gatk4.3/lib/python3.6/site-packages/numpy/distutils/command/build_src.py", line 535, in f2py_sources
    + ['--build-dir', target_dir, source])
  File "/home/joyzheng/.conda/envs/gatk4.3/lib/python3.6/site-packages/numpy/f2py/f2py2e.py", line 425, in run_main
    postlist = callcrackfortran(files, options)
  File "/home/joyzheng/.conda/envs/gatk4.3/lib/python3.6/site-packages/numpy/f2py/f2py2e.py", line 330, in callcrackfortran
    postlist = crackfortran.crackfortran(files)
  File "/home/joyzheng/.conda/envs/gatk4.3/lib/python3.6/site-packages/numpy/f2py/crackfortran.py", line 3251, in crackfortran
    readfortrancode(files, crackline)
  File "/home/joyzheng/.conda/envs/gatk4.3/lib/python3.6/site-packages/numpy/f2py/crackfortran.py", line 501, in readfortrancode
    dowithline(finalline)
  File "/home/joyzheng/.conda/envs/gatk4.3/lib/python3.6/site-packages/numpy/f2py/crackfortran.py", line 796, in crackline
    analyzeline(m, pat[1], line)
  File "/home/joyzheng/.conda/envs/gatk4.3/lib/python3.6/site-packages/numpy/f2py/crackfortran.py", line 1098, in analyzeline
    last_name = updatevars(typespec, selector, attr, edecl)
  File "/home/joyzheng/.conda/envs/gatk4.3/lib/python3.6/site-packages/numpy/f2py/crackfortran.py", line 1542, in updatevars
    attrspec = [x.strip() for x in markoutercomma(attrspec).split('@,@')]
  File "/home/joyzheng/.conda/envs/gatk4.3/lib/python3.6/site-packages/numpy/f2py/crackfortran.py", line 833, in markoutercomma
    assert not f, repr((f, line, l))
AssertionError: (-1, 'intent(in))', 'intent(in))')

问题原因

Numpy 1.17.5的f2py模块对Fortran代码的语法检查更严格,而Scipy 1.0.0的源码生成的.pyf文件中存在语法错误(多余的右括号:intent(in))),导致解析时触发断言失败。

解决方案

方案1:降级Numpy到兼容版本

Scipy 1.0.0官方兼容的Numpy版本范围是1.13.3~1.16.x,降级到该范围内的版本即可避免兼容性问题:

  1. 执行conda命令降级Numpy:
    conda install numpy=1.16.6
    
  2. 重新编译安装Scipy:
    python setup.py build && python setup.py install
    

方案2:修复Scipy源码中的语法错误

直接修改生成的.pyf文件中的语法问题:

  1. 定位到报错文件:build/src.linux-x86_64-3.6/scipy/linalg/flapack.pyf
  2. 在文件中搜索intent(in)),将所有出现的该内容修改为intent(in)
  3. 重新执行编译命令:
    python setup.py build
    

内容的提问来源于stack exchange,提问作者Joy Zheng

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 20:05:23