如何在Cygwin环境下为Python2.7编译安装pandas?
Python2.7安装Pandas编译错误解决方法
问题背景
维护遗留代码需使用Python2.7,已完成python27-devel、python27-cython及相关依赖包的安装,但执行pip2.7 install pandas时触发编译错误,核心问题是pandas/_libs/window.cpp文件中返回值类型不匹配,导致gcc编译失败,关键错误信息如下:
pandas/_libs/window.cpp: In function ‘PyObject* initwindow()’:
pandas/_libs/window.cpp:67892:3: error: return-statement with no value, in function returning ‘PyObject*’ {aka ‘_object*’} [-fpermissive]
67892 | return;
| ^~~~~~
可行解决方法
方法1:指定兼容版本并添加编译宽松参数
Pandas 0.24.2在高版本gcc环境下易出现此类编译问题,可选择Python2.7支持的更早稳定版本,同时通过CFLAGS添加-fpermissive参数放宽gcc的语法检查:
CFLAGS="-fpermissive" pip2.7 install pandas==0.23.4
注:除0.23.4外,0.24.1版本也可尝试使用该编译参数
方法2:手动修改编译文件应急修复
若方法1无效,可临时修改编译生成的源码文件完成安装:
- 编译中断后,保留pip生成的临时目录(示例路径:
/tmp/pip-install-g01aru/pandas/) - 打开
pandas/_libs/window.cpp文件,定位到第67892行,将return;替换为return NULL; - 进入临时目录,重新执行安装:
cd /tmp/pip-install-g01aru/pandas/ python2.7 setup.py install
方法3:降级gcc版本(环境允许时)
该错误多发生在gcc 7.x及以上版本,这类版本对C++语法的检查更为严格。若环境允许,可将gcc降级至6.x版本,之后再执行:
pip2.7 install pandas==0.24.2
内容的提问来源于stack exchange,提问作者Viktor Brešan
相关产品推荐
相关产品推荐

