【问题标题】:Mac OS X, pip: specify compiler for packages containing C librariesMac OS X,pip:为包含 C 库的包指定编译器
【发布时间】:2012-01-09 13:23:05
【问题描述】:

我在使用 pip 的默认 clang 编译器编译 mapscript(是来自 pypi 的包含 C 代码的包)时遇到了一些问题。

这是我的尝试:-

$ sudo pip install mapscript
Password:
Downloading/unpacking mapscript
  Running setup.py egg_info for package mapscript

Requirement already satisfied (use --upgrade to upgrade): distribute in /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages (from mapscript)
Installing collected packages: mapscript
  Running setup.py install for mapscript

    building '_mapscript' extension
    /opt/local/bin/gcc-apple-4.2 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -I/opt/local/include -I/opt/local/include -I/opt/local/include -pipe -O2 -arch x86_64 -fPIC -Wall -DNEED_NONBLOCKING_STDERR -DHAVE_VSNPRINTF -DNEED_STRRSTR -DNEED_NONBLOCKING_STDERR -DUSE_WMS_SVR -DUSE_GDAL -DUSE_OGR -DUSE_PROJ -DUSE_EPPL -DUSE_GD_GIF -DUSE_GD_PNG -DUSE_GD_JPEG -DUSE_GD_WBMP -DUSE_GD_FT -DGD_HAS_FTEX_XSHOW -DGD_HAS_GDIMAGEGIFPTR -DGD_HAS_GETBITMAPFONTS -DUSE_ICONV -DUSE_ZLIB -I/opt/local/include -I/opt/local/include -I/opt/local/include -DHAVE_VSNPRINTF -DNEED_STRRSTR -DNEED_NONBLOCKING_STDERR -DUSE_WMS_SVR -DUSE_GDAL -DUSE_OGR -DUSE_PROJ -DUSE_EPPL -DUSE_GD_GIF -DUSE_GD_PNG -DUSE_GD_JPEG -DUSE_GD_WBMP -DUSE_GD_FT -DGD_HAS_FTEX_XSHOW -DGD_HAS_GDIMAGEGIFPTR -DGD_HAS_GETBITMAPFONTS -DUSE_ICONV -DUSE_ZLIB -DHAVE_VSNPRINTF -DNEED_STRRSTR -DNEED_NONBLOCKING_STDERR -DUSE_WMS_SVR -DUSE_GDAL -DUSE_OGR -DUSE_PROJ -DUSE_EPPL -DUSE_GD_GIF -DUSE_GD_PNG -DUSE_GD_JPEG -DUSE_GD_WBMP -DUSE_GD_FT -DGD_HAS_FTEX_XSHOW -DGD_HAS_GDIMAGEGIFPTR -DGD_HAS_GETBITMAPFONTS -DUSE_ICONV -DUSE_ZLIB -I/opt/local/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c mapscript_wrap.c -o build/temp.macosx-10.7-x86_64-2.7/mapscript_wrap.o
    mapscript_wrap.c:2564:23: error: mapserver.h: No such file or directory
    mapscript_wrap.c:2565:25: error: maptemplate.h: No such file or directory
    mapscript_wrap.c:2566:23: error: mapogcsld.h: No such file or directory
...
mapscript_wrap.c:45472: error: 'MS_DEBUGLEVEL_VV' undeclared (first use in this function)

mapscript_wrap.c:45473: error: 'MS_DEBUGLEVEL_VVV' undeclared (first use in this function)

mapscript_wrap.c:45476: error: 'MS_GET_REQUEST' undeclared (first use in this function)

mapscript_wrap.c:45477: error: 'MS_POST_REQUEST' undeclared (first use in this function)

error: command '/opt/local/bin/gcc-apple-4.2' failed with exit status 1

----------------------------------------
Command /opt/local/Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python -c "import setuptools;__file__='/Users/calvin/build/mapscript/setup.py';exec(compile(open(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --single-version-externally-managed --record /tmp/pip-GYwtAz-record/install-record.txt failed with error code 1
Storing complete log in /Users/calvin/.pip/pip.log

gcc-apple-4.2版本是

$ gcc-apple-4.2 --version
i686-apple-darwin11-gcc-apple-4.2.1 (GCC) 4.2.1 (Apple Inc. build 5666) (dot 3)
Copyright (C) 2007 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

如何尝试使用其他编译器安装 mapscript?有没有办法明确指定 pip 在编译 pypi 包中的 C 代码时将调用的特定编译器?

【问题讨论】:

  • 我遇到了同样的问题。 Lion 上的 Python 坏了吗?
  • 嗨@KyleWpppd,经过一番挖掘,我了解到mapscript的C扩展默认使用与我编译Python 2.7(通过Macports)相同的编译器进行编译。由于我使用 gcc-apple-4.2 通过 MacPorts 编译我的 Python 2.7,因此在编译 mapscript 时将使用相同的编译器。为了解决这个问题,我必须确保首先正确编译 MapServer 6.0.1(并且 MapServer 6.0.1 在 MacPorts 上不可用 - MacPorts 上的副本严重过时)。此后,我做了“sudo python setup.py build”在系统范围内安装 mapscript。
  • 我在 OS X 10.8.2 上也遇到了同样的问题——我已经通过 Mac HomeBrew 安装了带有 --devel 的 mapserver,但是 pip install mapscript 由于非常相似的原因而失败。它在任何地方都找不到 mapserver.h。

标签: python c osx-lion pip pypi


【解决方案1】:

设置 CC 环境变量似乎可行,例如:

env CC=/usr/bin/gcc-4.0 pip install pyOpenSSL

【讨论】:

  • 这并没有解决问题或问题。该问题清楚地表明构建过程无法找到所需的头文件。 mapserver.h 是第一个。 ——詹姆斯米尔斯
  • 问题是“如何尝试使用另一个编译器安装 mapscript?”我相信这个答案非常具体地解决了这个问题。
猜你喜欢
  • 1970-01-01
  • 2013-11-18
  • 1970-01-01
  • 1970-01-01
  • 2014-02-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-11
相关资源
最近更新 更多