Scrapy-deploy 到 Scrapyd 不会安装 setup.py 中指出的要求
Scrapy-deploy to Scrapyd doesn't install requirements pointed in setup.py
我有一个用Scrapy写的项目。这个蜘蛛在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'
],
)
我检查了 scrapyd
源代码,它没有 运行 setup.py
你的项目。它只是解压包含依赖信息但不包含依赖本身的 egg。下面是 addversion api
的代码
class AddVersion(WsResource):
def render_POST(self, txrequest):
project = txrequest.args[b'project'][0].decode('utf-8')
version = txrequest.args[b'version'][0].decode('utf-8')
eggf = BytesIO(txrequest.args[b'egg'][0])
self.root.eggstorage.put(eggf, project, version)
spiders = get_spider_list(project, version=version)
self.root.update_projects()
UtilsCache.invalid_cache(project)
return {"node_name": self.root.nodename, "status": "ok", "project": project, "version": version, \
"spiders": len(spiders)}
在 self.root.eggstorage.put(eggf, project, version)
之后基本上只是提取鸡蛋,它直接 运行s spiders = get_spider_list(project, version=version)
因此没有这样的设置。
所以要么你的 egg 需要包含所有依赖项,这意味着你不会使用 scrapyd-deploy
构建 egg。我找不到太多文档来查看是否可行
所以你看到的是因为 srapyd 缺少实现。您应该在 http://github.com/scrapy/scrapyd/
打开错误或增强请求
我有一个用Scrapy写的项目。这个蜘蛛在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'
],
)
我检查了 scrapyd
源代码,它没有 运行 setup.py
你的项目。它只是解压包含依赖信息但不包含依赖本身的 egg。下面是 addversion api
class AddVersion(WsResource):
def render_POST(self, txrequest):
project = txrequest.args[b'project'][0].decode('utf-8')
version = txrequest.args[b'version'][0].decode('utf-8')
eggf = BytesIO(txrequest.args[b'egg'][0])
self.root.eggstorage.put(eggf, project, version)
spiders = get_spider_list(project, version=version)
self.root.update_projects()
UtilsCache.invalid_cache(project)
return {"node_name": self.root.nodename, "status": "ok", "project": project, "version": version, \
"spiders": len(spiders)}
在 self.root.eggstorage.put(eggf, project, version)
之后基本上只是提取鸡蛋,它直接 运行s spiders = get_spider_list(project, version=version)
因此没有这样的设置。
所以要么你的 egg 需要包含所有依赖项,这意味着你不会使用 scrapyd-deploy
构建 egg。我找不到太多文档来查看是否可行
所以你看到的是因为 srapyd 缺少实现。您应该在 http://github.com/scrapy/scrapyd/
打开错误或增强请求