无法将Scrapy Spider类导入Python脚本的问题求助
解决Scrapy爬虫类导入问题
问题根源
直接运行main/main.py时,Python的模块查找路径默认不包含Scrapy项目的顶级包目录,导致无法识别whiskers或spiders模块;而scrapy crawl命令会自动加载项目配置并添加正确路径,所以爬虫能正常运行。
可行解决方案
方案1:运行时手动添加PYTHONPATH
进入包含main、spiders子包的顶级whiskers包目录(路径:/whiskers/venv/whiskers/whiskers/),执行以下命令运行main.py:
PYTHONPATH=$(pwd) python main/main.py
Windows系统执行:
set PYTHONPATH=%cd% python main/main.py
方案2:在main.py中手动添加路径
在main/main.py最顶部添加代码,将顶级包目录加入Python的模块查找路径:
import sys from pathlib import Path # 获取当前脚本父级目录的父级(即顶级whiskers包所在目录) sys.path.append(str(Path(__file__).parent.parent)) # 现在可正常导入 from spiders.src import SomeSpider # 也可使用完整包路径 # from whiskers.spiders.src import SomeSpider
方案3:以模块方式运行main.py
回到包含顶级whiskers包的目录(路径:/whiskers/venv/whiskers/),使用-m参数以模块方式运行:
python -m whiskers.main.main
此时可使用相对导入语句:
from ..spiders.src import SomeSpider
内容的提问来源于stack exchange,提问作者SC4RECROW
相关产品推荐
相关产品推荐

