Python/Pip C包PyProj无法用GCC编译

all*_*rry 6 python gcc compiler-errors pip proj

我正在尝试通过virtualenv&pipWebFaction VM 上安装PyProj.我收到了编译错误.我正在使用此命令:

$ pip install pyproj
Run Code Online (Sandbox Code Playgroud)

有很多输出,终止于此:

src/geodesic.c: In function ‘InverseStart’:

src/geodesic.c:1093: error: ISO C90 forbids mixed declarations and code

error: command 'gcc' failed with exit status 1

----------------------------------------
Command "/home/<user>/webapps/<webapp>/env/py34/bin/python3.4 -c "import setuptools, tokenize;__file__='/tmp/pip-build-ow1vcsjk/pyproj/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-cl2pbd20-record/install-record.txt --single-version-externally-managed --compile --install-headers /home/<user>/webapps/<webapp>/env/py34/include/site/python3.4" failed with error code 1 in /tmp/pip-build-ow1vcsjk/pyproj
Run Code Online (Sandbox Code Playgroud)

我不太清楚从哪里开始.我从这个问题中收集问题,问题在于PyProj中C90的兼容性,我可能会编译而不是C99.只是一个猜测.

如上所述,这是在具有shell访问权限的远程VM上.我的开发机器(Mac)上有一个匹配的Virtualenv,它可以毫无问题地编译.但是,有不同的编译器:

开发:

$ gcc --version
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 6.0 (clang-600.0.56) (based on LLVM 3.5svn)
Run Code Online (Sandbox Code Playgroud)

VM:

$ gcc --version
gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-11)
Run Code Online (Sandbox Code Playgroud)

想法?提前致谢.

小智 7

问题是您的VM上的GCC版本默认为ISO C90标准,但pyproj代码与此不兼容.要强制GCC使用C99,您需要相应地设置CFLAGS环境变量,尝试

export CFLAGS='-std=c99'
Run Code Online (Sandbox Code Playgroud)

然后又跑pip install pyproj了.我对healpy也有同样的问题,这对我有用.