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

Featuretools无法加载tsfresh插件问题求助

排查Python3.10下featuretools加载tsfresh插件失败的问题

核心原因推测

  • Python版本依赖兼容性差异:tsfresh或featuretools_tsfresh_primitives的内部逻辑在Python3.10和3.11环境下存在细微行为差异,比如模块导入机制、插件注册逻辑的兼容性问题,导致featuretools自动加载插件时失败。
  • conda包打包差异:conda-forge源针对Python3.10和3.11打包的featuretools_tsfresh_primitives可能存在配置文件路径或内容不一致的情况,使得featuretools无法识别插件入口。

排查与解决步骤

  • 检查插件注册配置文件:
    定位到featuretools_tsfresh_primitives的安装目录(通常在Lib/site-packages/featuretools_tsfresh_primitives/路径下),确认featuretools_plugins.json文件存在且内容正确,标准配置应为:

    {
      "plugins": [
        {
          "name": "tsfresh",
          "library": "featuretools_tsfresh_primitives.__init__",
          "primitive_functions": ["get_primitives"]
        }
      ]
    }
    

    若文件缺失或内容错误,手动创建或修正该文件。

  • 强制重新安装匹配版本的依赖:
    清理现有安装后,严格指定版本和Python环境重新安装,确保依赖完全对齐:

    conda remove -y featuretools featuretools_tsfresh_primitives tsfresh
    conda install -c conda-forge featuretools=1.27.0 featuretools_tsfresh_primitives=1.0.2 tsfresh=0.20.1 python=3.10
    
  • 手动加载插件验证并注册:
    在Jupyter Notebook中绕过featuretools的自动加载逻辑,手动测试插件可用性:

    from featuretools_tsfresh_primitives import get_primitives
    primitives = get_primitives()
    print(f"Loaded {len(primitives)} tsfresh primitives")
    

    如果能成功加载,说明插件本身正常,可手动将primitive注册到featuretools:

    import featuretools as ft
    from featuretools_tsfresh_primitives import get_primitives
    
    ts_primitives = get_primitives()
    for primitive in ts_primitives:
        ft.register_primitive(primitive)
    
  • 添加调试日志定位加载细节:
    临时修改featuretools的插件加载逻辑,输出更详细的调试信息,确认插件文件是否被正确识别:

    import featuretools.plugins as plugins
    import logging
    
    logger = logging.getLogger("featuretools.plugins")
    logger.setLevel(logging.DEBUG)
    
    # 重写加载函数,添加打印信息
    original_load_plugins = plugins.load_plugins
    
    def debug_load_plugins():
        print("Scanning plugin directories...")
        plugins_dirs = plugins.get_plugin_directories()
        print(f"Found plugin directories: {plugins_dirs}")
        for dir_path in plugins_dirs:
            plugin_file = dir_path / "featuretools_plugins.json"
            if plugin_file.exists():
                print(f"Found plugin file: {plugin_file}")
                with open(plugin_file, 'r') as f:
                    print(f"Plugin file content:\n{f.read()}")
        return original_load_plugins()
    
    plugins.load_plugins = debug_load_plugins
    
    # 导入featuretools查看调试输出
    import featuretools as ft
    

内容的提问来源于stack exchange,提问作者J. Maria

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 22:16:05