Pyaudio,portaudio和mac 10.7.5

时间:2013-01-24 23:27:47

标签: python macports portaudio pyaudio

我无法正确安装pyaudio。我为该项目设置了virtualenv。我首先尝试安装portaudio:

sudo port install portaudio

返回:

--->  Cleaning portaudio
--->  Scanning binaries for linking errors: 100.0%
--->  No broken files found.

我认为这意味着它运行良好。然后我试了一下:

pip install pyaudio

返回:

Downloading/unpacking pyaudio
Running setup.py egg_info for package pyaudio

warning: no files found matching '*.c' under directory 'test'
Installing collected packages: pyaudio
Running setup.py install for pyaudio
building '_portaudio' extension
gcc-4.2 -fno-strict-aliasing -fno-common -dynamic -isysroot /Developer/SDKs/MacOSX10.6.sdk -arch i386 -arch x86_64 -g -O2 -DNDEBUG -g -O3 -DMACOSX=1 -I/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c src/_portaudiomodule.c -o build/temp.macosx-10.6-intel-2.7/src/_portaudiomodule.o -fno-strict-aliasing
src/_portaudiomodule.c:29:23: error: portaudio.h: No such file or directory
src/_portaudiomodule.c:33:25: error: pa_mac_core.h: No such file or directory
...

这是第一个警告问题吗?我有点惊讶它说没有portaudio.h的文件或目录。我是否必须做一些特殊的事情来启用我的端口音频macport安装?

感谢任何帮助!

10 个答案:

答案 0 :(得分:4)

$ brew install portaudio
$ pip install pyaudio

portaudio提供的一些缺少的库。适用于Python 2.7(不确定其他版本)

答案 1 :(得分:3)

以下内容如何:

$ sudo port install py27-pyaudio
Warning: port definitions are more than two weeks old, consider using selfupdate
--->  Computing dependencies for py27-pyaudio
--->  Fetching archive for py27-pyaudio
--->  Attempting to fetch py27-pyaudio-0.2.7_0.darwin_12.x86_64.tbz2 from http://lil.fr.packages.macports.org/py27-pyaudio
--->  Attempting to fetch py27-pyaudio-0.2.7_0.darwin_12.x86_64.tbz2.rmd160 from http://lil.fr.packages.macports.org/py27-pyaudio
--->  Installing py27-pyaudio @0.2.7_0
--->  Activating py27-pyaudio @0.2.7_0
--->  Cleaning py27-pyaudio
--->  Updating database of binaries: 100.0%
--->  Scanning binaries for linking errors: 100.0%
--->  No broken files found.
$ python -c "import pyaudio"
$

这至少对我有用。

答案 2 :(得分:1)

根据我上面的评论,这类似于this回答,但由于OP不清楚,我将再试一次。 (这基本上只是我在做这个时给自己做的一些笔记的剪切和粘贴。)

  1. 这是32位的构建。
  2. 下载pyaudio和portaudio(我使用0.2.4,v19)。
  3. cd portaudio
  4. make clean
  5. CC =“gcc -arch i386”./ configure -enable-static
  6. 使
  7. sudo make install(如果你静态链接它可能不需要)。
  8. 将portaudio移动到PyAudio目录中,即:
    1. cd ..(在portaudio之外)
    2. mv portaudio PyAudio / portaudio-v19(注意这里需要v19)
  9. cd进入PyAudio并运行:
    1. 确保您在虚拟环境中,即source bin/activate
    2. python setup.py build -static-link
    3. python setup.py install

答案 3 :(得分:1)

您可以使用安装portaudio $ sudo port install portaudio

您可以使用来自http://people.csail.mit.edu/hubert/pyaudio/

的mac安装程序安装pyaduio

答案 4 :(得分:1)

这将安装pyaudio所需的portaudio:

sudo port install portaudio

接下来,为您的python版本

寻找合适的pyaudio macport
port search pyaudio

假设您正在使用python27,请安装pyaudio:

sudo port install py27-pyaudio

参考文献:

How do I install PyAudio in virtualenv on Mac OS X 10.7

答案 5 :(得分:1)

创建虚拟环境,激活它:

virtualenv env
env/bin/activate

下载PyAudio(当时最新):

wget -c http://people.csail.mit.edu/hubert/pyaudio/packages/pyaudio-0.2.8.tar.gz
tar zxf pyaudio-0.2.8.tar.gz
cd PyAudio-0.2.8/

在PyAudio文件夹中解压缩portaudio,将其重命名为portaudio-v19并构建它:

wget -c http://www.portaudio.com/archives/pa_stable_v19_20140130.tgz
tar zxf pa_stable_v19_20140130.tgz
mv portaudio portaudio-v19
cd portaudio-v19
./configure
make
cd ../

回到PyAudio目录:

export CFLAGS="-I `pwd`/portaudio-v19/include/ -L `pwd`/portaudio-v19/lib/.libs/"
python setup.py build --static-link
python setup.py install

多数民众赞成!

答案 6 :(得分:1)

关键是这个命令:

export CFLAGS="-I `pwd`/portaudio-v19/include/ -L `pwd`/portaudio-v19/lib/.libs/"

避免此类文件错误。

这解决了我的问题,非常感谢@tuxdna。

答案 7 :(得分:0)

问题是pyaudio安装脚本(setup.py)假定所有必需的标头都在/usr/include中。这就是为什么它适用于HomeBrew,而不是MacPorts,它通常(并且干净地)将所有内容放在/opt/local下。

PyAudio维护者依赖HomeBrew,现在没有选项组合允许拼写出查找标题的位置。在撰写本文时,setup.py source code仅支持Mac OS X的默认值。

要使用MacPorts,它很麻烦但足以创建两个链接进行编译:

port install portaudio
sudo ln -s /opt/local/include/portaudio.h /usr/include
sudo ln -s /opt/local/include/pa_mac_core.h /usr/include
pip install --user pyaudio # Should now compile fine.

安装完成后,可能会删除链接。

在安装了MacPorts的Python 2.7的Mac OS X 10.10上进行测试。

答案 8 :(得分:0)

我最近需要这个,因为我想使用Google Cloud API转录麦克风的音频。我的Mac中安装了Python 3.7。

i386的最新OSx版本不支持此功能,因此要解决此问题,需要修改配置文件。

  1. 下载portaudio源代码http://www.portaudio.com/download.html
  2. 下载MacOSX10.12.sdk https://github.com/phracker/MacOSX-SDKs/releases并将其复制到/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs
  3. 将此行添加到portaudio配置文件中,以便包含MacOSX10.13.sdk和MacOSX10.14.sdk,这样就不会失败

          elif xcodebuild -version -sdk macosx10.13 Path >/dev/null 2>&1 ; then
             mac_version_min="-mmacosx-version-min=10.4"
             mac_sysroot="-isysroot `xcodebuild -version -sdk macosx10.13 Path`"
          elif xcodebuild -version -sdk macosx10.14 Path >/dev/null 2>&1 ; then
             mac_version_min="-mmacosx-version-min=10.4"
             mac_sysroot="-isysroot `xcodebuild -version -sdk macosx10.14 Path`"              
          else
             as_fn_error $? "Could not find 10.5 to 10.14 SDK." "$LINENO" 5
          fi
    
  4. 从您的portaudio文件夹中

    ./configure && make
    sudo make install
    
  5. 下载PyAudio源代码(无限制)https://pypi.org/project/PyAudio/#files

  6. 在.bash_profile中添加环境PORTAUDIO_PATH,其中包含已下载的portaudio源代码的完整路径。

    PORTAUDIO_PATH=/full/path/portaudio
    export PORTAUDIO_PATH
    
  7. 在下载的PyAudio源文件中,修改setup.py,以将portaudio-v19文件夹重命名为portaudio

    portaudio_path = os.environ.get("PORTAUDIO_PATH", "./portaudio")
    
  8. 安装

    python3 setup.py install --static-link
    

答案 9 :(得分:0)

我遇到了同样的问题。对我来说,我从 portaudio 官方网站下载了源代码。

编译安装后,将头文件pa_mac_core.h<source code folder>/include复制到/usr/local/include。问题终于解决了。