需要帮助在 mac os x 上安装 python 包 autopy - libpng 和 png.h 的困难
Posted
技术标签:
【中文标题】需要帮助在 mac os x 上安装 python 包 autopy - libpng 和 png.h 的困难【英文标题】:Need help installing python package autopy on mac os x - difficulty with libpng and png.h 【发布时间】:2012-01-13 17:10:09 【问题描述】:我想知道是否有人可以帮助我解决这个问题。当我尝试 python setup.py build(或 pip install 或 easy_install)时,会发生这种情况
要点是
src/png_io.c:3:17: error: png.h: No such file or directory
src/png_io.c: In function ‘newMMBitmapFromPNG’:
src/png_io.c:34: error: ‘png_struct’ undeclared (first use in this function)
src/png_io.c:34: error: (Each undeclared identifier is reported only once
...一堆错误...
src/png_io.c:332: error: ‘PNG_TRANSFORM_IDENTITY’ undeclared (first use in this function)
lipo: can't figure out the architecture type of: /var/folders/kt/d8t29zkx7kd_7c_mr17ntv6m0000gn/T//ccubs4CM.out
error: command 'gcc-4.2' failed with exit status 1
libpng 在 Library/Frameworks 中,它在 的搜索路径中包含(我用 cpp -v 检查过),但它作为 libpng.framework 在那里,然后标题位于名为 headers 的子目录中。 libpng.framework 文件中还有几个版本的 libpng。我也在运行 64 位 python。任何想法如何进行?
谢谢, 帕特
【问题讨论】:
【参考方案1】:如你所料,错误是因为编译器找不到头文件png.h
你能告诉我这个框架是如何被包含进来的吗?你在使用 -I 和 -L 吗?
在 GCC 中包含框架的正确语法是
gcc -F*dir*
或
gcc -iframework*dir*
希望对你有帮助
来自http://gcc.gnu.org/onlinedocs/gcc/Darwin-Options.html
-Fdir 将框架目录 dir 添加到要搜索头文件的目录列表的头部。这些目录与 -I 选项指定的目录交错,并按从左到右的顺序扫描。
A framework directory is a directory with frameworks in it. A framework is a directory with a Headers and/or PrivateHeaders directory contained directly in it that ends in .framework. The name of a framework is the name of this directory excluding the .framework. Headers associated with the framework are found in one of those two directories, with Headers being searched first. A subframework is a framework directory that is in a framework's Frameworks directory. Includes of subframework headers can only appear in a header of a framework that contains the subframework, or in a sibling subframework header. Two subframeworks are siblings if they occur in the same framework. A subframework should not have the same name as a framework, a warning will be issued if this is violated. Currently a subframework cannot have subframeworks, in the future, the mechanism may be extended to support this. The standard frameworks can be found in /System/Library/Frameworks and /Library/Frameworks. An example include looks like #include <Framework/header.h>, where Framework denotes the name of the framework and header.h is found in the PrivateHeaders or Headers directory.
【讨论】:
【参考方案2】:在这种特殊情况下,这是因为您缺少 libpng。 (带有png.h的框架)
您可以从 http://ethan.tira-thompson.com/Mac_OS_X_Ports.html 安装它,然后重新运行 autopy 安装,您应该一切顺利!
【讨论】:
以上是关于需要帮助在 mac os x 上安装 python 包 autopy - libpng 和 png.h 的困难的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Mac OS X Lion 上安装 Python 库“gevent”
在 Mac OS X Yosemite 上安装 Python3
在 Mac OS X 10.6 上使用带有 Python 2.7 的 Google App Engine SDK