这是一篇很长的文章,所以我在顶部放了一个简短的总结。
Lion 已经推出了足够长的时间,我终于可以安装大多数 Python 库等。我需要使用二进制安装。当涉及到 libsndfile 时,我被卡住了。安装 libsndfile 的最佳方法是什么,如果它相关,其余的东西是什么?
如果您需要更多详细信息,请继续阅读...我正在开发一个使用以下内容的程序,最初在 OSX 10.7.3 下开发,并且还需要能够在 WinXp 和 Win7 上构建跨平台:
Python 2.7.2
Numpy 1.6.1
SciPy 0.10.1
matplotlib 1.1.0
SciPy.scikits.samplerate
SciPy.scikits.audiolab
PortMidi
pyinstaller
我在我的 OSX 开发机器上安装了所有这些,并且一切都在调试器下工作。当我尝试使用 pyinstaller 构建时遇到了麻烦,因为我的安装是二进制安装的历史大杂烩,从源代码构建、easy_install、pip 和 HomeBrew。从无用的 MacPorts 安装中提取了几个文件。一些库是在我运行 Lion 测试版时安装的,当时很难让某些东西在 Lion 下运行。
我的想法是,Lion 已经出现了足够长的时间,应该可以进行更清洁的安装,这应该会简化未来的工作,尤其是使用 pyinstaller。我创建了一个新的 Lion VM 并执行了以下操作:
1. Installed Python 2.7.2 Mac OS X 64-bit/32-bit x86-64/i386 from binaries.
2. Installed numpy-1.6.1-py2.7-python.org-macosx10.6 from binaries.
3. Installed scipy-0.10.1-py2.7-python.org-macosx10.6 from binaries.
4. Installed matplotlib-1.1.0-py2.7-python.org-macosx10.6 from binaries.
5. Installed Xcode 4.3.1 and downloaded command tools
6. Installed libsamplerate-0.1.8 from source; required by scikits.samplerate
到目前为止,一切都很好,尽管我不确定 libsamplerate 的 i386 与 x86_64 架构;我可能需要返回并为每个架构安装一次,然后创建一个通用二进制文件。
接下来是 libsndfile,这是 scikits.audiolab 所需的。这很麻烦,因为我发现了一个不断扩展的依赖网络:
libiconv
ncurses
expat
gettext
glib
pkg-config
libFlac
libogg
libvorgis
Gettext 很痛苦,因为我得到的 stpncpy 错误已经发布在几个地方,但是找到真正解决问题的补丁有点乏味。
即使在显然构建了我列出的所有依赖项之后,libsndfile 仍然不会没有错误地构建并且我被卡住了。
看看我花了多少时间未能让 libsndfile 正常工作,我开始质疑基本方法。我似乎没有能力找出所有的错误并在有限的时间内做出适当的改变。
我发现自己回到了包管理器路径...easy_install 到 pip 和 HomeBrew;但有些事情似乎只有 MacPorts 可以处理,但总体而言,MacPorts 以我无法接受的方式与 Python 纠缠在一起,而且 pyinstaller 讨厌 MacPorts。如果我这样做,我可能会或可能不会让事情再次工作,但即使我这样做,我担心我不会知道实际需要哪些部分或能够随着时间的推移维护开发环境。