Scrapyd 找不到子目录中的代码
Scrapyd can't find the code in a sub-directory
我们有一个很正常的 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 *
...没有任何效果。虽然如果 运行 从命令行 'direct' 使用 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"],
}
)
这有点奇怪,因为代码就是数据,实际上...但它对我们有用。
感谢关注。已解决。
我们有一个很正常的 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 *
...没有任何效果。虽然如果 运行 从命令行 'direct' 使用 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"],
}
)
这有点奇怪,因为代码就是数据,实际上...但它对我们有用。
感谢关注。已解决。