尝试rpy2
时,我遇到了编译pip install
的错误:
./rpy/rinterface/_rinterface.c:2376:3: error: ISO C90 forbids mixed declarations and code [-Werror=declaration-after-statement]
(还有更多喜欢它)
这是Python对编译器的调用:
gcc -pthread -Werror=declaration-after-statement -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -DR_INTERFACE_PTRS=1 -DHAVE_POSIX_SIGJMP=1 -DRIF_HAS_RSIGHAND=1 -DCSTACK_DEFNS=1 -DHAS_READLINE=1 -I./rpy/rinterface -I/home/hen/miniconda3/envs/fitts/include/python3.4m -I/usr/share/R/include -c ./rpy/rinterface/_rinterface.c -o build/temp.linux-x86_64-3.4/./rpy/rinterface/_rinterface.o
答案 0 :(得分:3)
通过一些谷歌搜索,我确定问题是-Werror=declaration-after-statement
标志。试图找出这面旗帜的来源。我最终遇到了this Python issue:
重建3.4模块时遇到错误。这是ISO C90错误,但setup.py明确地将
-std=c99
添加到gcc参数,实际上它被使用。
fifo.h:114:5: error: ISO C90 forbids mixed declarations and code [-Werror=declaration-after-statement] uint32_t ofs = fifo->write_count - fifo->write_offset;
然而,Py 3.4似乎也为扩展模块添加了
-Werror=declaration-after-statement
。这不应该发生(在#python
中也说Yhg1s。)
在修复程序出现之前,可以通过运行
来解决export CFLAGS="-Wno-error=declaration-after-statement"
在运行pip install
或python setup.py install
。