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