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

运行Scrapy crawl时出现ModuleNotFoundError: No module named '_lzma'错误求助

解决Scrapy虚拟环境中ModuleNotFoundError: No module named '_lzma'问题

1. 补全系统依赖

先确保系统层面的lzma相关依赖完整安装,执行:

sudo apt-get update && sudo apt-get install liblzma-dev xz-utils -y

2. 重新编译虚拟环境的Python(核心修复)

虚拟环境中的Python如果是编译安装的,大概率是编译时未启用lzma支持,导致系统依赖装了也无法被Python调用。需重新编译Python并指定lzma支持:

  • 删除现有虚拟环境:
rm -rf /path/to/your/virtualenv
  • 若使用pyenv管理Python,执行以下命令重新安装对应版本并启用lzma:
PYTHON_CONFIGURE_OPTS="--with-lzma=$(which xz)" pyenv install 3.x.x
# 替换3.x.x为你实际使用的Python版本
pyenv virtualenv 3.x.x your-env-name
  • 若手动编译Python:
# 进入Python源码目录
./configure --prefix=/usr/local/python3 --with-lzma
make && sudo make install

重新创建虚拟环境后,重新安装Scrapy和Playwright。

3. 用backports.lzma替代原生模块(无需编译的折中方案)

如果不想重新编译Python,可通过配置让Python优先加载backports.lzma:

  • 确保已安装backports.lzma:
pip install backports.lzma
  • 在虚拟环境的site-packages目录下创建lzma.py文件,写入:
try:
    from backports import lzma
except ImportError:
    import lzma

或者在Scrapy项目的settings.py最顶部添加:

try:
    import backports.lzma as lzma
    import sys
    sys.modules['lzma'] = lzma
except ImportError:
    pass

4. 验证修复

激活虚拟环境后,执行测试命令:

scrapy bench

无报错则说明问题已解决。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 07:55:40