Scrapydeploy to Scrapyd不安装中指定的需求设置.py

2024-05-14 04:19:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个项目是用Scrapy写的。这种蜘蛛在设置.py. 下面是一个简单的示例。我跑

scrapyd-deploy

输出如下

^{pr2}$

但是

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'
    ],
)

Tags: 项目inpy示例settingspackagessetupfind
1条回答
网友
1楼 · 发布于 2024-05-14 04:19:46

我检查了scrapyd源代码,但它没有运行您项目的setup.py。它只是解包包含依赖关系信息的鸡蛋,而不是依赖关系本身。下面是addVersionAPI的代码

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)之后,它直接运行spiders = get_spider_list(project, version=version),因此不需要这样设置。在

因此,要么您的egg需要包含所有依赖项,这意味着您不需要使用scrapyd-deploy来构建egg。我找不到太多的文件来证明这是否可行

所以你看到的是因为srapyd缺乏实现。您应该在http://github.com/scrapy/scrapyd/打开一个bug或增强请求

相关问题 更多 >