Scrapyd无法在子目录中找到代码

时间:2015-01-31 14:41:40

标签: scrapy scrapyd

我们有一个非常正常的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 *

......没有任何效果。虽然它可以从命令行直接运行'直接'使用scrapy crawl执行。

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

谢谢!

1 个答案:

答案 0 :(得分:1)

实际上,我找到了原因。我应该使用 data_files param:

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"],
    }
)

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

感谢您的关注。解决。