You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

pip安装feature_selector时出现setup.py egg_info运行失败(exit code:1)

报错根因
  • PyPI上发布的feature_selector==1.0.0包最后一次更新是2018年,打包时硬编码锁定了一批同年代的老旧依赖版本:seaborn==0.8.1、pandas==0.23.1、scikit-learn==0.19.1、matplotlib==2.1.2,这些版本完全不兼容Python 3.8及以上运行环境。
  • 日志里的核心异常AttributeError: module 'platform' has no attribute 'linux_distribution',是因为platform.linux_distribution()方法在Python 3.8版本就被官方移除,而2.1.2版本matplotlib的安装脚本仍在调用这个废弃接口,直接触发安装流程中断。
  • 日志中提示的缺少freetype头文件、libpng的pkg-config信息,是因为老旧版matplotlib没有适配Python3.8的预编译wheel包,pip会回退到源码编译模式,就算补全所有系统编译依赖,最终还是会因为Python版本接口不兼容安装失败。
解决方法

方法一:手动安装放开依赖限制的源码版本(推荐)

不要直接安装PyPI上的旧包,直接获取项目源码手动安装:

  1. 下载项目源码到本地并解压
  2. 打开解压目录下的setup.py文件,删除所有依赖项后面写死的版本号限制,只保留包名即可
  3. 进入解压目录,执行pip install .完成安装。这个工具本身逻辑非常简单,对新版本pandas、scikit-learn、matplotlib兼容性没有问题,只是当年打包时错误写死了老版本依赖号。

方法二:创建Python3.7虚拟环境隔离安装

如果不想修改源码,可以单独创建兼容的低版本Python环境安装,避免影响现有项目依赖:

# 用conda创建虚拟环境
conda create -n feature_sel python=3.7 -y
conda activate feature_sel
# 安装源码编译需要的系统依赖
sudo apt update && sudo apt install -y pkg-config libfreetype6-dev libpng-dev
# 执行安装
pip install feature_selector

不要在这个环境里安装其他需要高版本数据科学栈的包,避免依赖冲突。

方法三:直接复用核心代码

feature_selector总代码量不到1000行,核心功能就是围绕缺失率、单一值占比、特征共线性、模型特征重要性几个维度做特征筛选,完全可以把核心实现类直接复制到自身项目中调用,省去折腾依赖的成本,还可以按需调整筛选逻辑。

避坑提醒:不要在当前Python3.8+的主环境里强行降级依赖适配这个包,会把现有环境里的pandas、scikit-learn、matplotlib等核心库全部替换成6年前的旧版本,直接导致其他项目无法运行。

内容的提问来源于stack exchange,提问作者Nikita

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 20:01:22