为何Python无法找到Scrapy生成的项目包?
Scrapy模块导入错误解决方案
环境信息
Platform: Windows 10. IDE: VS Code Python version: 3.12.1 Scrapy version: 2.11.0
操作回顾
- 执行命令生成项目(注:原命令存在拼写错误):
scrapy startprojet NewScrapyProject - 修改
items.py定义Item:import scrapy class MyItem(scrapy.Item): field1 = scrapy.Field() field2 = scrapy.Field() - 在
spiders目录创建new_spider.py:
(Scrapy项目结构为根文件夹与内部包同名)from NewScrapyProject.items import MyItem from scrapy.spiders import CrawlSpider class NewSpider(CrawlSpider): name='my_spyder' def parse(self, response): item = MyItem() item['field1'] = response.xpath('//div[1]//ul/li').get() item['field2'] = response.xpath('//div[1]//ul//li[2]').get() yield item spider = NewSpider() print(spider.name)
报错信息
直接运行new_spider.py时出现:
Traceback (most recent call last): File "c:\Users\USER\Documents\pythonProjects\NewScrapyProject\NewScrapyProject\spiders\new_spider.py", line 1, in <module> from NewScrapyProject.items import MyItem ModuleNotFoundError: No module named 'NewScrapyProject'
已尝试修改文件/文件夹名、清理缓存、切换Python版本至3.10.2、使用相对导入from ..items import MyItem,问题未解决。
解决方法
修正项目生成命令
原命令startprojet拼写错误,正确命令为:scrapy startproject NewScrapyProject重新生成项目确保结构正确。
使用Scrapy官方命令启动爬虫
不要直接运行new_spider.py文件,Scrapy爬虫必须通过框架命令启动。进入包含scrapy.cfg的根项目文件夹(c:\Users\USER\Documents\pythonProjects\NewScrapyProject),执行:scrapy crawl my_spyder调试时手动添加路径
如果需要单独调试爬虫代码,在new_spider.py开头添加以下代码将项目根目录加入Python路径:import sys import os # 把项目根目录(包含scrapy.cfg的文件夹)添加到路径 sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))之后使用相对导入:
from ..items import MyItem检查VS Code解释器配置
确保VS Code使用的Python解释器已安装Scrapy,可通过左下角状态栏切换到对应版本的解释器。
内容的提问来源于stack exchange,提问作者David
相关产品推荐
相关产品推荐

