如何在 Windows 上安装 scikits.audiolab 0.11.0

Posted

技术标签:

【中文标题】如何在 Windows 上安装 scikits.audiolab 0.11.0【英文标题】:How does one install scikits.audiolab 0.11.0 on Windows 【发布时间】:2018-05-26 13:08:23 【问题描述】:

我目前正在尝试在 Windows 10 上为 Python 3.5.4 安装 scikits.audiolab 0.11.0,它需要来自 http://www.mega-nerd.com/libsndfile/ 的 libsndfile。我已将它安装到我的 conda 虚拟环境中,因此文件路径如下所示:

C:\Users\MXJ719\AppData\Local\Continuum\anaconda3\envs\wavenet\libs\libsndfile

然后我在

中编辑 site.cfg 文件
C:\Users\MXJ719\AppData\Local\Continuum\anaconda3\envs\wavenet\Lib\site-packages\numpy\distutils

阅读:

[sndfile]
library_dirs = C:\Users\MXJ719\AppData\Local\Continuum\anaconda3\envs\wavenet\libs\libsndfile;C:\Users\MXJ719\AppData\Local\Continuum\anaconda3\envs\wavenet\libs\libsndfile\lib
include_dirs = C:\Users\MXJ719\AppData\Local\Continuum\anaconda3\envs\wavenet\libs\libsndfile;C:\Users\MXJ719\AppData\Local\Continuum\anaconda3\envs\wavenet\libs\libsndfile\include
sndfile_libs = sndfile-1

然后我在 anaconda 提示符下激活我的 wavenet 环境并输入:

pip install scikits.audiolab==0.11.0

给出以下错误和回溯:

(wavenet) C:\Windows>pip install scikits.audiolab==0.11.0
Collecting scikits.audiolab==0.11.0
    Using cached scikits.audiolab-0.11.0.tar.gz
        Complete output from command python setup.py egg_info:
        SndfileInfo:
            libraries sndfile not found in C:\Users\MXJ719\AppData\Local\Continuum\anaconda3\envs\wavenet\libs\libsndfile
            libraries sndfile not found in C:\Users\MXJ719\AppData\Local\Continuum\anaconda3\envs\wavenet\libs\libsndfile\lib
        Traceback (most recent call last):
            File "scikits\audiolab\pysndfile\setup.py", line 20, in configuration
              sf_config = sf_info.get_info(2)
            File "C:\Users\MXJ719\AppData\Local\Continuum\anaconda3\envs\wavenet\lib\site-packages\numpy\distutils\system_info.py", line 578, in get_info
              raise self.notfounderror(self.notfounderror.__doc__)
        numpy.distutils.system_info.NotFoundError: Some third-party program or library is not found.

        During handling of the above exception, another exception occurred:

        Traceback (most recent call last):
          File "<string>", line 1, in <module>
          File "C:\Users\MXJ719\AppData\Local\Temp\pip-build-bet3e29j\scikits.audiolab\setup.py", line 85, in <module>
            classifiers=CLASSIFIERS)
          File "C:\Users\MXJ719\AppData\Local\Continuum\anaconda3\envs\wavenet\lib\site-packages\numpy\distutils\core.py", line 135, in setup
            config = configuration()
          File "C:\Users\MXJ719\AppData\Local\Temp\pip-build-bet3e29j\scikits.audiolab\setup.py", line 71, in configuration
            config.add_subpackage(DISTNAME)
          File "C:\Users\MXJ719\AppData\Local\Continuum\anaconda3\envs\wavenet\lib\site-packages\numpy\distutils\misc_util.py", line 1029, in add_subpackage
            caller_level = 2)
          File "C:\Users\MXJ719\AppData\Local\Continuum\anaconda3\envs\wavenet\lib\site-packages\numpy\distutils\misc_util.py", line 998, in get_subpackage
            caller_level = caller_level + 1)
          File "C:\Users\MXJ719\AppData\Local\Continuum\anaconda3\envs\wavenet\lib\site-packages\numpy\distutils\misc_util.py", line 935, in _get_configuration_from_setup_py
            config = setup_module.configuration(*args)
          File "scikits\audiolab\setup.py", line 10, in configuration
            confgr.add_subpackage('pysndfile')
          File "C:\Users\MXJ719\AppData\Local\Continuum\anaconda3\envs\wavenet\lib\site-packages\numpy\distutils\misc_util.py", line 1029, in add_subpackage
            caller_level = 2)
          File "C:\Users\MXJ719\AppData\Local\Continuum\anaconda3\envs\wavenet\lib\site-packages\numpy\distutils\misc_util.py", line 998, in get_subpackage
            caller_level = caller_level + 1)
          File "C:\Users\MXJ719\AppData\Local\Continuum\anaconda3\envs\wavenet\lib\site-packages\numpy\distutils\misc_util.py", line 935, in _get_configuration_from_setup_py
            config = setup_module.configuration(*args)
          File "scikits\audiolab\pysndfile\setup.py", line 25, in configuration
            site.cfg file, in section [sndfile].""")
numpy.distutils.system_info.NotFoundError: sndfile (http://www.mega-nerd.com/libsndfile/) library not found.
Directories to search for the libraries can be specified in the
site.cfg file, in section [sndfile].

----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in 
C:\Users\MXJ719\AppData\Local\Temp\pip-build-bet3e29j\scikits.audiolab\

我想知道为什么安装程序似乎无法“看到”我在 site.cfg 文件中提供的 libsndfile 目录,并获得有关如何解决此问题以安装 scikits.audiolab 0.11.0 版的指示

【问题讨论】:

有一个关于它的open github issue。 是的,我发现了这个,但不幸的是,这些解决方案都不起作用 【参考方案1】:

如果你的问题只是sndfile,你只需要做一个site.cfg的设置配置

site.cfg.example 中的表单是这样的:

[sndfile]
include_dirs = c:\local\include
library_dirs = c:\local\lib
sndfile_libs = sndfile-1

用 2 个可选条件更改它:

******第一种方法******

根据 site.cfg 中设置的变量重命名您的 libsndfile 库 (*.lib),

[sndfile]
    include_dirs = C:\Program Files\Mega-Nerd\libsndfile\include
    library_dirs = C:\Program Files\Mega-Nerd\libsndfile\lib

    #and you must really give an attention to the setting code below, if you put the setting like the original, setting like this script below

    sndfile_libs = sndfile-1

    #so all your file must in folder include_dirs should be renamed to: sndfile-1.h, sndfile-1.hh (in include folder) 
    #and renamed the lib file in library_dirs to: sndfile-1.lib and sndfile-1.lib

之后,您必须确保 lib 在您的 PYTHONPATH 中,如果您没有设置 PYTHONPATH,请使用:

系统属性>>环境变量>>系统变量>>>新建

在新系统变量中输入 PYTHONPATH >> 变量名

输入你的 include、lib 和 bin libsndfile 路径目录到变量值,例如:

'YOUR PYTHON FOLDER that have python.exe'; 'YOUR PYTHON SCRIPT FOLDER';C:\Program Files\Mega-Nerd\libsndfile\lib;C:\Program Files\Mega-Nerd\libsndfile\include;C:\Program Files\Mega-Nerd\libsndfile\bin

然后按确定

之后你应该输入 PYTHONPATH 到 Path

只需编辑您的路径变量名称并使用 %PYTHONPATH% 添加新行

如果您已经设置/设置了 PYTHONPATH 环境,只需添加编辑并添加新行

C:\Program Files\Mega-Nerd\libsndfile\lib;C:\Program Files\Mega-Nerd\libsndfile\include;C:\Program Files\Mega-Nerd\libsndfile\bin

或使用:

*****第二种方法*****,

将文件 site.cfg 设置到你的 python 目录

[sndfile]
include_dirs = c:\users\admin\appdata\local\programs\python\python37\include
library_dirs = c:\users\admin\appdata\local\programs\python\python37\libs
sndfile_libs = 'change this base with your libsndfile's library name 
#so, you don't have to make many step

通过这个设置,我的 python 可以识别 libsndfile 位置

在我的情况下,另一个模块也需要 libsndfile 库,它搜索具有不同名称的库,所以在我的 python 文件夹中,我将 libsndfile 复制到多个名称中,这取决于模块如何搜索该库。

【讨论】:

【参考方案2】:

从 sndfile 库文件名中删除“-1”。

在你的情况下:

    libsndfile-1.lib 重命名为libsndfile.liblibsndfile-1.def 重命名为libsndfile.def

这些文件位于C:\Users\MXJ719\AppData\Local\Continuum\anaconda3\envs\wavenet\libs\libsndfile\lib

C:\Program Files\Mega-Nerd\libsndfile\ 中安装的 sndfile 也有同样的问题。

我的C:\Users\[userNameHere]\site.cfg 文件有以下内容:

[sndfile]
library_dirs = C:\Program Files\Mega-Nerd\libsndfile\lib\
include_dirs = C:\Program Files\Mega-Nerd\libsndfile\include\

(定义sndfile_libs对我没有明显影响,所以我把它省略了。)

希望这对你来说已经足够了。解决此问题后我遇到了其他问题,但我会尝试通过https://github.com/cournape/audiolab/issues/7获得帮助

【讨论】:

以上是关于如何在 Windows 上安装 scikits.audiolab 0.11.0的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Windows 上安装 PyCrypto?

如何在Windows上安装FFmpeg程序

如何在 Windows 上安装 Node 14 版本

如何在 Windows 上安装 Poppler?

如何在 Windows 上安装 IMDbPY?

如何在Windows上安装FFmpeg程序