这几天尝试安装lama-cleaner,试一试其自动处理图片的功能。在两台电脑上试过,操作系统分别是Windows 10和银河麒麟V10(SP1),Python的版本都是3.12。
安装命令简单说就是下面这一句
pip install lama-cleaner -i https://pypi.tuna.tsinghua.edu.cn/simple --verbose
这里的网址表示使用的是清华大学的更新源,可以加快下载速度。--verbose是为了显示更多的安装过程信息,这对发现安装时错误的线索有帮助,不添加不影响安装效果。
由于lama-cleaner是需要Rust语言,因此需要提前安装Rust,以及C++的编译工具,这个网上有很多教程,包括如何使用国内镜像(例如中国科技大学)加快Rust下载速度,这里就不重复了。
再反复确认lama-cleaner各种安装依赖条件都具备之后,多次安装都会报以下错误:
error: `cargo rustc --lib --message-format=json-render-diagnostics --manifest-path Cargo.toml --release -v --features pyo3/extension-module --crate-type cdylib --` failed with code 101
其中具体产生错误的语句是
error: casting `&T` to `&mut T` is undefined behavior, even if the reference is unused, consider instead using an `UnsafeCell`
--> tokenizers-lib/src/models/bpe/trainer.rs:526:47
|
522 | let w = &words[*i] as *const _ as *mut _;
| -------------------------------- casting happend here
...
526 | let word: &mut Word = &mut (*w);
| ^^^^^^^^^
|
= note: for more information, visit <https://doc.rust-lang.org/book/ch15-05-interior-mutability.html>
= note: `#[deny(invalid_reference_casting)]` on by default
在网上搜索,发现了有一个网页介绍了解决问题的办法
https://github.com/huggingface/tokenizers/issues/1359
产生这个问题的因素,有的说是transformers、python等软件的版本匹配问题,有的解释说上文中的错误说明安装包中mutable reference的使用是不安全的,导致了Rust安全检查报错,建议修改代码……最后看起来最简单的处理办法是增加以下环境变量
在Linux系统中,在终端命令行窗口输入
export RUSTFLAGS="-A invalid_reference_casting"
在Windows系统中,可以在PowerShell的窗口中输入
$ENV:RUSTFLAGS="-A invalid_reference_casting"
加入这个环境变量后,Rust的安全检查会把以上的error转变成warning,程序编译得以继续。
在两个操作系统上测试,都管用(lama-cleaner启动时还要在GitHub上下载模型,由于网络问题,可能会下载很慢)。
标签:cleaner,lama,casting,reference,--,tokenizers,安装 From: https://www.cnblogs.com/sodynamic/p/18313940