繁体   English   中英

为 scipy 安装 BLAS 和 LAPACK 的最简单方法是什么?

[英]What is the easiest way to install BLAS and LAPACK for scipy?

我想运行一个别人已经准备好的程序,它包括 scipy。 我试图安装 scipy

pip install scipy

但它给了我一个很长的错误。 我知道 Anaconda 和 Canopy 有很多方法,但我认为这些方法很长。 我想要一条捷径。 我也试过

G:\determinator_Oskar>pip install scipy
Collecting scipy
  Using cached scipy-0.16.1.tar.gz
Building wheels for collected packages: scipy
  Running setup.py bdist_wheel for scipy
  Complete output from command g:\myve\scripts\python.exe -c "import setuptools;
__file__='e:\\temp_n~1\\pip-build-1xigxu\\scipy\\setup.py';exec(compile(open(__f
ile__).read().replace('\r\n', '\n'), __file__, 'exec'))" bdist_wheel -d e:\temp_
n~1\tmp07__zrpip-wheel-:
  lapack_opt_info:
  openblas_lapack_info:
    libraries openblas not found in ['g:\\myve\\lib', 'C:\\']
    NOT AVAILABLE

  lapack_mkl_info:
  mkl_info:
    libraries mkl,vml,guide not found in ['g:\\myve\\lib', 'C:\\']
    NOT AVAILABLE

    NOT AVAILABLE

  atlas_3_10_threads_info:
  Setting PTATLAS=ATLAS
    libraries tatlas,tatlas not found in g:\myve\lib
    libraries lapack_atlas not found in g:\myve\lib
    libraries tatlas,tatlas not found in C:\
    libraries lapack_atlas not found in C:\
  <class 'numpy.distutils.system_info.atlas_3_10_threads_info'>
    NOT AVAILABLE

  atlas_3_10_info:
    libraries satlas,satlas not found in g:\myve\lib
    libraries lapack_atlas not found in g:\myve\lib
    libraries satlas,satlas not found in C:\
    libraries lapack_atlas not found in C:\
  <class 'numpy.distutils.system_info.atlas_3_10_info'>
    NOT AVAILABLE

  atlas_threads_info:
  Setting PTATLAS=ATLAS
    libraries ptf77blas,ptcblas,atlas not found in g:\myve\lib
    libraries lapack_atlas not found in g:\myve\lib
    libraries ptf77blas,ptcblas,atlas not found in C:\
    libraries lapack_atlas not found in C:\
  <class 'numpy.distutils.system_info.atlas_threads_info'>
    NOT AVAILABLE

  atlas_info:
    libraries f77blas,cblas,atlas not found in g:\myve\lib
    libraries lapack_atlas not found in g:\myve\lib
    libraries f77blas,cblas,atlas not found in C:\
    libraries lapack_atlas not found in C:\
  <class 'numpy.distutils.system_info.atlas_info'>
    NOT AVAILABLE

  lapack_info:
    libraries lapack not found in ['g:\\myve\\lib', 'C:\\']
    NOT AVAILABLE

  lapack_src_info:
    NOT AVAILABLE

    NOT AVAILABLE

  g:\myve\lib\site-packages\numpy\distutils\system_info.py:1552: UserWarning:
      Atlas (http://math-atlas.sourceforge.net/) libraries not found.
      Directories to search for the libraries can be specified in the
      numpy/distutils/site.cfg file (section [atlas]) or by setting
      the ATLAS environment variable.
    warnings.warn(AtlasNotFoundError.__doc__)
  g:\myve\lib\site-packages\numpy\distutils\system_info.py:1563: UserWarning:
      Lapack (http://www.netlib.org/lapack/) libraries not found.
      Directories to search for the libraries can be specified in the
      numpy/distutils/site.cfg file (section [lapack]) or by setting
      the LAPACK environment variable.
    warnings.warn(LapackNotFoundError.__doc__)
  g:\myve\lib\site-packages\numpy\distutils\system_info.py:1566: UserWarning:
      Lapack (http://www.netlib.org/lapack/) sources not found.
      Directories to search for the sources can be specified in the
      numpy/distutils/site.cfg file (section [lapack_src]) or by setting
      the LAPACK_SRC environment variable.
    warnings.warn(LapackSrcNotFoundError.__doc__)
  Running from scipy source directory.
  Traceback (most recent call last):
    File "<string>", line 1, in <module>
    File "e:\temp_n~1\pip-build-1xigxu\scipy\setup.py", line 253, in <module>
      setup_package()
    File "e:\temp_n~1\pip-build-1xigxu\scipy\setup.py", line 250, in setup_packa
ge
      setup(**metadata)
    File "g:\myve\lib\site-packages\numpy\distutils\core.py", line 135, in setup

      config = configuration()
    File "e:\temp_n~1\pip-build-1xigxu\scipy\setup.py", line 175, in configurati
on
      config.add_subpackage('scipy')
    File "g:\myve\lib\site-packages\numpy\distutils\misc_util.py", line 1001, in
 add_subpackage
      caller_level = 2)
    File "g:\myve\lib\site-packages\numpy\distutils\misc_util.py", line 970, in
get_subpackage
      caller_level = caller_level + 1)
    File "g:\myve\lib\site-packages\numpy\distutils\misc_util.py", line 907, in
_get_configuration_from_setup_py
      config = setup_module.configuration(*args)
    File "scipy\setup.py", line 15, in configuration
      config.add_subpackage('linalg')
    File "g:\myve\lib\site-packages\numpy\distutils\misc_util.py", line 1001, in
 add_subpackage
      caller_level = 2)
    File "g:\myve\lib\site-packages\numpy\distutils\misc_util.py", line 970, in
get_subpackage
      caller_level = caller_level + 1)
    File "g:\myve\lib\site-packages\numpy\distutils\misc_util.py", line 907, in
_get_configuration_from_setup_py
      config = setup_module.configuration(*args)
    File "scipy\linalg\setup.py", line 20, in configuration
      raise NotFoundError('no lapack/blas resources found')
  numpy.distutils.system_info.NotFoundError: no lapack/blas resources found

  ----------------------------------------
  Failed building wheel for scipy
Failed to build scipy
Installing collected packages: scipy
  Running setup.py install for scipy
    Complete output from command g:\myve\scripts\python.exe -c "import setuptool
s, tokenize;__file__='e:\\temp_n~1\\pip-build-1xigxu\\scipy\\setup.py';exec(comp
ile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __fi
le__, 'exec'))" install --record e:\temp_n~1\pip-3hncqr-record\install-record.tx
t --single-version-externally-managed --compile --install-headers g:\myve\includ
e\site\python2.7\scipy:
    lapack_opt_info:
    openblas_lapack_info:
      libraries openblas not found in ['g:\\myve\\lib', 'C:\\']
      NOT AVAILABLE

    lapack_mkl_info:
    mkl_info:
      libraries mkl,vml,guide not found in ['g:\\myve\\lib', 'C:\\']
      NOT AVAILABLE

      NOT AVAILABLE

    atlas_3_10_threads_info:
    Setting PTATLAS=ATLAS
      libraries tatlas,tatlas not found in g:\myve\lib
      libraries lapack_atlas not found in g:\myve\lib
      libraries tatlas,tatlas not found in C:\
      libraries lapack_atlas not found in C:\
    <class 'numpy.distutils.system_info.atlas_3_10_threads_info'>
      NOT AVAILABLE

    atlas_3_10_info:
      libraries satlas,satlas not found in g:\myve\lib
      libraries lapack_atlas not found in g:\myve\lib
      libraries satlas,satlas not found in C:\
      libraries lapack_atlas not found in C:\
    <class 'numpy.distutils.system_info.atlas_3_10_info'>
      NOT AVAILABLE

    atlas_threads_info:
    Setting PTATLAS=ATLAS
      libraries ptf77blas,ptcblas,atlas not found in g:\myve\lib
      libraries lapack_atlas not found in g:\myve\lib
      libraries ptf77blas,ptcblas,atlas not found in C:\
      libraries lapack_atlas not found in C:\
    <class 'numpy.distutils.system_info.atlas_threads_info'>
      NOT AVAILABLE

    atlas_info:
      libraries f77blas,cblas,atlas not found in g:\myve\lib
      libraries lapack_atlas not found in g:\myve\lib
      libraries f77blas,cblas,atlas not found in C:\
      libraries lapack_atlas not found in C:\
    <class 'numpy.distutils.system_info.atlas_info'>
      NOT AVAILABLE

    lapack_info:
      libraries lapack not found in ['g:\\myve\\lib', 'C:\\']
      NOT AVAILABLE

    lapack_src_info:
      NOT AVAILABLE

      NOT AVAILABLE

    g:\myve\lib\site-packages\numpy\distutils\system_info.py:1552: UserWarning:
        Atlas (http://math-atlas.sourceforge.net/) libraries not found.
        Directories to search for the libraries can be specified in the
        numpy/distutils/site.cfg file (section [atlas]) or by setting
        the ATLAS environment variable.
      warnings.warn(AtlasNotFoundError.__doc__)
    g:\myve\lib\site-packages\numpy\distutils\system_info.py:1563: UserWarning:
        Lapack (http://www.netlib.org/lapack/) libraries not found.
        Directories to search for the libraries can be specified in the
        numpy/distutils/site.cfg file (section [lapack]) or by setting
        the LAPACK environment variable.
      warnings.warn(LapackNotFoundError.__doc__)
    g:\myve\lib\site-packages\numpy\distutils\system_info.py:1566: UserWarning:
        Lapack (http://www.netlib.org/lapack/) sources not found.
        Directories to search for the sources can be specified in the
        numpy/distutils/site.cfg file (section [lapack_src]) or by setting
        the LAPACK_SRC environment variable.
      warnings.warn(LapackSrcNotFoundError.__doc__)
    Running from scipy source directory.
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "e:\temp_n~1\pip-build-1xigxu\scipy\setup.py", line 253, in <module>
        setup_package()
      File "e:\temp_n~1\pip-build-1xigxu\scipy\setup.py", line 250, in setup_pac
kage
        setup(**metadata)
      File "g:\myve\lib\site-packages\numpy\distutils\core.py", line 135, in set
up
        config = configuration()
      File "e:\temp_n~1\pip-build-1xigxu\scipy\setup.py", line 175, in configura
tion
        config.add_subpackage('scipy')
      File "g:\myve\lib\site-packages\numpy\distutils\misc_util.py", line 1001,
in add_subpackage
        caller_level = 2)
      File "g:\myve\lib\site-packages\numpy\distutils\misc_util.py", line 970, i
n get_subpackage
        caller_level = caller_level + 1)
      File "g:\myve\lib\site-packages\numpy\distutils\misc_util.py", line 907, i
n _get_configuration_from_setup_py
        config = setup_module.configuration(*args)
      File "scipy\setup.py", line 15, in configuration
        config.add_subpackage('linalg')
      File "g:\myve\lib\site-packages\numpy\distutils\misc_util.py", line 1001,
in add_subpackage
        caller_level = 2)
      File "g:\myve\lib\site-packages\numpy\distutils\misc_util.py", line 970, i
n get_subpackage
        caller_level = caller_level + 1)
      File "g:\myve\lib\site-packages\numpy\distutils\misc_util.py", line 907, i
n _get_configuration_from_setup_py
        config = setup_module.configuration(*args)
      File "scipy\linalg\setup.py", line 20, in configuration
        raise NotFoundError('no lapack/blas resources found')
    numpy.distutils.system_info.NotFoundError: no lapack/blas resources found

    ----------------------------------------
Command "g:\myve\scripts\python.exe -c "import setuptools, tokenize;__file__='e:
\\temp_n~1\\pip-build-1xigxu\\scipy\\setup.py';exec(compile(getattr(tokenize, 'o
pen', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install
--record e:\temp_n~1\pip-3hncqr-record\install-record.txt --single-version-exter
nally-managed --compile --install-headers g:\myve\include\site\python2.7\scipy"
failed with error code 1 in e:\temp_n~1\pip-build-1xigxu\scipy      

我也试过

pip install lapack

有了这个结果

Collecting lapack
  Could not find a version that satisfies the requirement lapack (from versions
 )
No matching distribution found for lapack

我也试过

pip install blas

结果相似

G:\determinator_Oskar>pip install blas
Collecting blas
  Could not find a version that satisfies the requirement blas (from versions: )

No matching distribution found for blas

为什么 scipy 变得如此复杂?

对于Debian JessieStretch,安装以下软件包可解决此问题:

sudo apt install libblas3 liblapack3 liblapack-dev libblas-dev

您的下一个问题很可能是缺少 Fortran 编译器,请通过如下安装来解决此问题:

sudo apt install gfortran

如果你想要一个优化的 scipy,你还可以安装可选的libatlas-base-dev包:

sudo apt install libatlas-base-dev

来源


如果您对缺少的 Python.h 文件有任何问题,如下所示:

Python.h:没有这样的文件或目录

然后看看这个帖子: https : //stackoverflow.com/a/21530768/209532

SciPy 安装页面已经推荐了几种安装 Python 的方法,其中 SciPy 已经包含在内,例如WinPython

另一种方法是使用轮子(内置包格式):

pip install SomePackage-1.0-py2.py3-none-any.whl

您可以在以下位置找到车轮包: http : //www.lfd.uci.edu/~gohlke/pythonlibs/

对于 SciPy,您需要:

“为什么 scipy 会变得如此复杂?

它变得如此复杂,因为 Python 的包管理系统是为跟踪 Python 包依赖关系而构建的,而 SciPy 和其他科学工具的依赖关系超出了 Python。 Wheels解决了部分问题,但我的经验是pip / virtualenv等工具不足以安装和管理科学的 Python 堆栈。

如果您想要一种简单的方法来启动和运行 SciPy,我强烈建议您使用Anaconda 发行版 它将为您提供在 Python 中进行科学计算所需的一切。

如果您想要一种“简短的方式”来执行此操作(我将其解释为“我不想安装大型发行版”),您可以尝试使用miniconda ,然后运行conda install scipy

对于 Ubuntu/Debian, chjortlund 的回答总是很好,但并不完美,因为这样你会得到一个未优化的 BLAS 库。 你只需要做:

sudo apt install libatlas-base-dev

瞧!

来源

使用 conda install scipy 而不是 pip 为我解决了这个问题!

对于 Windows:最好使用以下站点提供的预编译包: http : //www.lfd.uci.edu/%7Egohlke/pythonlibs/#scipy

为完整起见,尽管鉴于您的特定设置(外部程序 + Windows),这可能无法正常工作,但作为(大型) SageMath下载的一部分,您也可以轻松获得 Scipy。

要么使用SciPy whl ,下载适当的并运行pip install <whl_file>

或者

通读SciPy Windows 问题并运行其中一种方法

或者

使用Miniconda

此外,如果需要,请 为 python2.7安装Visual C++ 编译器

我在 freeBSD 上遇到了这个问题。 似乎缺少 lapack 软件包,我解决了安装它们(以 root 身份)的问题:

pkg install lapack
pkg install atlas-devel  #not sure this is needed, but just in case

我想它也可以使用适当的软件包安装程序(例如 apt-get)在其他系统上工作

pip install Cython

pip install sklearn

帮我解决了这个问题。

conda install liblapack

这对我有用

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM