使用外部包部署 scrapyd spider
Deploy scrapyd spider with external packages
scrapyd 文档包括以下说明:
scrapyd-deploy won’t deploy anything outside the project module...
这是否意味着我无法从我的蜘蛛程序中导入站点包?
我的蜘蛛程序依赖外部库,例如 MySQL-python 和 tldextract。我必须在项目模块中包含这些库并从包含库而不是站点包导入吗?
我认为 Deploying your project 文档段落应该澄清一些事情:
Finally, to deploy your project use:
scrapyd-deploy scrapyd -p project1
This will eggify your project and
upload it to the target, printing the JSON response returned from the
Scrapyd server. If you have a setup.py
file in your project, that one
will be used. Otherwise a setup.py
file will be created automatically
(based on a simple template) that you can edit later.
换句话说,您 would/should 具有 MySQL-python
、tldextract
或 setup.py
中列出的其他依赖项,它们将在部署期间自动安装。
我发现一些证据(即 gitHub 帖子 here and here)表明不支持(也不会)支持通过 'setup.py' 文件安装自定义包。由于我在 docker 容器中 运行 scrapyd,我的解决方法是:
- 通过在 Dockerfile 中调用
pip install <package>
,确保必要的外部 Python 包安装在 scrapyd 容器中。
- 在容器中创建一个绑定挂载,它链接到 scrapy 项目目录外部的任何自定义模块。我在 docker-compose 文件中为我的 scrapyd 服务输入了以下几行(请注意,必须在容器的“/tmp”目录中创建挂载点):
volumes:
- custom_module:/tmp/custom_module
scrapyd 文档包括以下说明:
scrapyd-deploy won’t deploy anything outside the project module...
这是否意味着我无法从我的蜘蛛程序中导入站点包?
我的蜘蛛程序依赖外部库,例如 MySQL-python 和 tldextract。我必须在项目模块中包含这些库并从包含库而不是站点包导入吗?
我认为 Deploying your project 文档段落应该澄清一些事情:
Finally, to deploy your project use:
scrapyd-deploy scrapyd -p project1
This will eggify your project and upload it to the target, printing the JSON response returned from the Scrapyd server. If you have a
setup.py
file in your project, that one will be used. Otherwise asetup.py
file will be created automatically (based on a simple template) that you can edit later.
换句话说,您 would/should 具有 MySQL-python
、tldextract
或 setup.py
中列出的其他依赖项,它们将在部署期间自动安装。
我发现一些证据(即 gitHub 帖子 here and here)表明不支持(也不会)支持通过 'setup.py' 文件安装自定义包。由于我在 docker 容器中 运行 scrapyd,我的解决方法是:
- 通过在 Dockerfile 中调用
pip install <package>
,确保必要的外部 Python 包安装在 scrapyd 容器中。 - 在容器中创建一个绑定挂载,它链接到 scrapy 项目目录外部的任何自定义模块。我在 docker-compose 文件中为我的 scrapyd 服务输入了以下几行(请注意,必须在容器的“/tmp”目录中创建挂载点):
volumes: - custom_module:/tmp/custom_module