我有一个用Scrapy编写的项目。这个spider在setup.py中有很多需求。下面是一个简单的示例。我运行
scrapyd-deploy
并具有以下输出
Packing version 1506254163
Deploying to project "quotesbot" in http://localhost:6800/addversion.json
Server response (200):
......................... [CUTTED TRACEBACK] ...........
\"/private/var/folders/xp/c949vlsd14q8xm__dv0dx8jh0000gn/T/quotesbot-1506254163-e50lmcfx.egg/quotesbot/spiders/toscrape-css.py\",
line 4, in <module>\n
ModuleNotFoundError: No module named 'sqlalchemy'\n"}
但是
setup.py in the same directory:
# Automatically created by: scrapyd-deploy
from setuptools import setup, find_packages
setup(
name = 'quotesbot',
version = '1.0',
packages = find_packages(),
entry_points = {'scrapy': ['settings = quotesbot.settings']},
install_requires=[
'scrapy-splash',
[ SOME REQUIREMENTS]
'sqlalchemy'
],
)
2条答案
按热度按时间o4hqfura1#
我检查了
scrapyd
的源代码,它并不运行你项目的setup.py
,它只是解包了包含依赖信息的egg,而不是依赖本身。在
self.root.eggstorage.put(eggf, project, version)
(基本上只是提取egg)之后,它直接运行spiders = get_spider_list(project, version=version)
,因此没有这样做的设置。因此,egg要么需要包含所有依赖项,这意味着不能使用
scrapyd-deploy
构建egg。所以你所看到的是因为srapyd缺乏实现,你应该在http://github.com/scrapy/scrapyd/上打开一个bug或者增强请求
i86rm4rw2#
在the scrapyd documentation的“* 包括依赖项 *”部分中,它显示:
如果您的项目有其他依赖项,您可以将它们安装在Scrapyd服务器上,也可以将它们包含在项目的egg中,分两步进行:
1.在项目的根目录下创建requirements.txt文件
1.生成或部署项目时使用--include-dependencies选项:
scrapyd-deploy --include-dependencies
当它说requirements.txt需要放在项目的根目录中时,它指的是scraper项目的根目录。