如何在 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.lib
将libsndfile-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的主要内容,如果未能解决你的问题,请参考以下文章