我们有一个非常正常的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
Run Code Online (Sandbox Code Playgroud)
如果我们从命令行运行它,一切都很好 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从命令行"直接"执行运行.
我们该怎么做才能让它发挥作用?
谢谢!
其实我已经找到原因了。我应该使用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"],
}
)
Run Code Online (Sandbox Code Playgroud)
这有点奇怪,因为代码实际上就是数据......但它对我们有用。
感谢您的关注。解决了。
| 归档时间: |
|
| 查看次数: |
208 次 |
| 最近记录: |