Scrapyd 找不到子目录中的代码

Scrapyd can't find the code in a sub-directory

我们有一个很正常的 Scrapy 项目,大概是这样的:

project/
       setup.py
       scrapy.cfg
       SOME_DIR_WITH_PYTHON_MODULE/
                                  __init__.py
       project/
              settings.py
              pipelines.py
              __init__.py
              spiders/
                     __init__.py
                     somespider.py

如果我们从命令行 运行 一切正常 scrapy crawl somespider...

但是当我们使用 Scrapyd 部署它并 运行 时,它无法从 SOME_DIR_WITH_PYTHON_MODULE 导入代码。由于某些未知原因,它似乎看不到代码。

我们尝试将其导入到 pipelines.py 文件中。那样试过:

from project.SOME_DIR_WITH_PYTHON_MODULE import *

像那样:

from SOME_DIR_WITH_PYTHON_MODULE import *

...没有任何效果。虽然如果 运行 从命令行 'direct' 使用 scrapy crawl 执行它是有效的。

我们应该怎么做才能让它发挥作用?

谢谢!

其实我找到原因了。我应该使用 data_files 参数:

setup(
    name='blabla',
    version='1.0',
    packages=find_packages(),
    entry_points={'scrapy': ['settings = blabla.settings']},
    zip_safe=False,
    include_package_data=True,
    data_files=[(root, [os.path.join(root, f) for f in files])
         for root, _, files in itertools.chain(os.walk('monitoring'),
                                               os.walk('blabla/data'))],
    install_requires=[
        "Scrapy>=0.22",
    ],
    extras_require={
        'Somemodule': ["numpy"],
    }
)

这有点奇怪,因为代码就是数据,实际上...但它对我们有用。

感谢关注。已解决。