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

VS Code运行Scrapy爬虫出现ModuleNotFoundError: No module named 'myitems'求助

问题根因

你在VSCode配置的python.analysis.extraPaths只作用于编辑器的静态代码分析阶段,不会影响Python运行时的模块搜索路径,所以设计阶段自动补全正常,但运行Scrapy命令时找不到模块。你用相对导入from .myitems import xxx报错是因为myitems.py存放在项目根目录,不是spiders子目录下,相对导入会从当前文件(keizer.py在spiders目录)所在位置查找,自然找不到。

解决方案

  1. 调整导入语句:先改回原来的导入写法:
    from myitems import CarItem
    
  2. 确认必要文件存在:在C:\scrapy\hw_spiders目录下新增空的__init__.py文件,Python需要这个文件才会将目录识别为可导入的包。
  3. 固定运行路径:执行Scrapy命令时必须在scrapy.cfg所在的目录(也就是C:\scrapy\hw_spiders)下运行,Scrapy会自动将当前目录加入模块搜索路径。

如果执行后还是报错,可以在keizer.py的所有导入语句最前面加以下代码,手动将项目根目录加入运行时搜索路径:

import sys
import os
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))

VSCode报错修复

如果修改后Pylance仍然报导入错误,将.vscode/settings.json的配置改为绝对路径写法适配不同打开场景:

{
    "python.analysis.extraPaths": [
        "${workspaceFolder}/hw_spiders"
    ]
}

如果你当前VSCode打开的根目录就是C:\scrapy\hw_spiders,直接把值改成"./"即可。

项目结构优化建议

标准Scrapy项目约定使用items.py作为Item定义文件,你自定义为myitems.py本身功能不受影响,但建议遵守官方约定,降低后续维护成本。另外不要将Item定义文件放在spiders子目录下,统一放在项目根包目录即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 11:18:01