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

编译Python版Polars遇编译错误,求适配Rust版本及解决方案

编译Python版Polars 0.18.15时的Rust版本问题与修复方案

问题描述

使用的命令

python -m pip install --no-binary :all: maturin
python -m pip install --no-binary :all: Polars==0.18.15

当前Rust版本

C:\Users\ashish.shirodkar>rustc --version
rustc 1.74.0-nightly (58eefc33a 2023-08-24)

错误信息

Compiling pyo3-built v0.4.7
         Compiling lz4 v1.24.0
         Compiling zstd v0.12.4
         Compiling parquet2 v0.17.2
         Compiling polars-error v0.32.0 (C:\Users\ashish.shirodkar\AppData\Local\Temp\pip-install-cor5irss\polars_180ec2d9ea9044ce86687698c1427599\local_dependencies\polars-error)
         Compiling polars-row v0.32.0 (C:\Users\ashish.shirodkar\AppData\Local\Temp\pip-install-cor5irss\polars_180ec2d9ea9044ce86687698c1427599\local_dependencies\polars-row)
      error: assigning to `&T` is undefined behavior, consider using an `UnsafeCell`
         --> local_dependencies\polars-core\src\chunked_array\ops\rolling_window.rs:120:29
          |
      96  |               let ptr = array_ptr.as_ref() as *const dyn Array as *mut dyn Array
          |  _______________________-
      97  | |                 as *mut PrimitiveArray<T::Native>;
          | |_________________________________________________- 转换发生在此处
      ...
      120 |                               *ptr = arr_window;
          |                               ^^^^^^^^^^^^^^^^^
          |
          = note: `#[deny(invalid_reference_casting)]` on by default

注:用户已尝试使用旧版Rust但未解决问题。

解决方案

推荐的Rust版本

使用Rust 1.73.0稳定版,Polars 0.18.15的代码完全兼容这个版本。

原因:Rust 1.74-nightly新增了invalid_reference_casting的强制禁用检查,而Polars 0.18.15的代码中的指针转换逻辑触发了这个新检查导致编译失败。Rust 1.73及以下的稳定版本没有启用这个严格检查,能正常完成编译。

其他可行修复办法

  1. 临时绕过检查编译:
    安装Polars时通过环境变量关闭该lint检查,无需更换Rust版本:

    RUSTFLAGS="--allow invalid_reference_casting" python -m pip install --no-binary :all: Polars==0.18.15
    

    此方法仅绕过检查,不修复代码本身的问题,适合必须使用当前Rust版本和Polars 0.18.15的场景。

  2. 升级Polars版本:
    Polars 0.19.x及以上版本已修复该指针转换问题,直接安装更高版本即可解决:

    python -m pip install --no-binary :all: Polars>=0.19.0
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 11:53:10