python3.12手动安装modelscope 时报 No module named ‘_lzma‘

最近在试用modelscope 的AI模型。由于公司内网无法直接下载docker文件,不能使用docker镜像。于是只能用pip来安装。

modelscope官方页面pip安装方式推荐的时python3.8,那是个快EOL的版本了,而官方docker镜像提供的已经是python3.10版。哎,看出这个社区文档更新得不勤快啊!

不满足于python3.10,我要装最新的python3.12!干!手搓!

我在一个debian linux里面安装了python3.12后,一切安装modelscope官方页面来。安装pytorch,然后tenserflow,然后安装modelscope,比较顺利。

但运行第一行测试代码from modelscope.pipelines 就报了No module named '_lzma' 。

上网查,一堆文章都只是说要安装一个backports.lzma,然后还要去修改lzma.py。但python官网说lzma已经是标准库自带的。backports.lzma这个是用来支持老版本的。感觉这个解决办法已经过时了。我觉得应该是编译安装python3.12时就越少了库,导致编译出来的python3.12是有缺陷的。

还好我是在docker里面装的python3.12,有问题就立即重编译。几番尝试,最后发现在编译之前要先安装这个包就行了(我的是Debain11,其他linux的库名可能不同。):

apt install liblzma5 

apt install liblzma-dev

lzma库import成功后,后面又报了No module named transformers,这是一个huggingface的库。啊?!阿里的modelscope还是要依赖huggingface的库?!有点奇怪。

直接pip install transformers。安装成功。

然后再手动下载了nlp_structbert_word-segmentation_chinese-base 模型里面的所有文件,放到一个目录中。使用时model = Model.from_pretrained('model_path')

最后helloworld实例运行成功!

from modelscope.models import Model
from modelscope.pipelines import pipeline
from modelscope.preprocessors import Preprocessor, TokenClassificationTransformersPreprocessor

model = Model.from_pretrained('/path_to_model/nlp_structbert_word-segmentation_chinese-base')
# tokenizer = Preprocessor.from_pretrained(model.model_dir)
# Or call the constructor directly: 
tokenizer = TokenClassificationTransformersPreprocessor(model.model_dir)
word_segmentation = pipeline('word-segmentation', model=model, preprocessor=tokenizer)
input = '今天天气不错,适合出去游玩'
print(word_segmentation(input))
{'output': ['今天', '天气', '不错', ',', '适合', '出去', '游玩']}

  • 10
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值