我们有一个非常正常的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执行。
我们应该怎样做才能让它发挥作用?
谢谢!
答案 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"],
}
)
这有点奇怪,因为代码是数据,实际上......但它对我们有用。
感谢您的关注。解决。