Scrapyd在子目录中找不到代码

标签 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 scrapy somespider...

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

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

从项目.SOME_DIR_WITH_PYTHON_MODULE导入*

像这样:

从 SOME_DIR_WITH_PYTHON_MODULE 导入 *

...但没有任何作用。尽管如果使用 scrapy 爬行从命令行“直接”执行运行它就可以工作。

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

谢谢!

最佳答案

其实我已经找到原因了。我应该使用 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"],
    }
)

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

感谢您的关注。已解决。

关于Scrapyd在子目录中找不到代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28252833/

相关文章:

python-2.7 - 在heroku上部署scrapy项目

web-scraping - Scrapy管理动态蜘蛛

python - 使用 Scrapy 解析站点地图

python - scrapy 蜘蛛代码检查

python - 无法部署scrapy项目

python - 使用scrapyd部署项目出错

python - 使用带参数的 Scrapyd

scrapy - 不抓取数据库中保存的网址

html - Scrapy - 从具有特定属性值的链接中提取 href

python - 使用Scrapy爬取多个域,无需纵横交错