关于Windows部署scrapyd项目报错的两个问题

2021/4/25 7:27:20

本文主要是介绍关于Windows部署scrapyd项目报错的两个问题,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

在windows环境中,当我们需要部署scrapy项目到服务器时,常用到scrapyd,作为部署管理工具,在服务器端安装scrapyd并运行后,就可以正常使用。但是,当我们需要将windows本地的scrapy项目部署到服务器上时,需要安装scrapyd-client,用于打包项目,并发送给远程的scrapyd。

第一个问题
pip install scrapyd-client 后。在cmd中运行部署命令,scrapyd-deploy 却提示:

‘scrapyd-deploy’ 不是内部或外部命令,也不是可运行的程序或批处理文件。

在python目录的Scripts目录下,能找到一个scrapy-deploy的文件,但是无法运行。下面来讲解决办法:

  1. 进到C:/python36/Scripts 目录下,创建两个新文件:
    scrapy.bat 文件
    scrapyd-deploy.bat 文件

  2. 编辑两个文件:

scrapy.bat文件中输入以下内容 :

@echo off
C:\Python36\python.exe C:\Python36\Scripts\scrapy %*

scrapyd-deploy.bat 文件中输入以下内容:

@echo off
C:\Python36\python.exe C:\Python36\Scripts\scrapyd-deploy %*
  1. 保存退出,并确保你的 C:/python 和C:/python/Scripts 都在环境变量。这样就可以正常运行scrapy-deploy命令了。

第二个问题:
执行scrapyd-deploy -h 提示报错

C:\Users\Administrator>scrapyd-deploy
Traceback (most recent call last):
  File "C:\Python36\Scripts\scrapyd-deploy", line 23, in <module>
    from scrapy.utils.http import basic_auth_header
ModuleNotFoundError: No module named 'scrapy.utils.http'

由于底层scrapyd-deploy的模块scrapy.utils.http已经弃用,建议更新为w3lib.http替代
打开文件"C:\Python36\Scripts\scrapyd-deploy",注释第23行,修改如下:

from scrapy.utils.project import inside_project
#from scrapy.utils.http import basic_auth_header
from w3lib.http import basic_auth_header
from scrapy.utils.python import retry_on_eintr
from scrapy.utils.conf import get_config, closest_scrapy_cfg

重新执行已解决。
C:\Users\Administrator>scrapyd-deploy -h

Usage: scrapyd-deploy [options] [ [target] | -l | -L <target> ]

Deploy Scrapy project to Scrapyd server

Options:
  -h, --help            show this help message and exit
  -p PROJECT, --project=PROJECT
                        the project name in the target
  -v VERSION, --version=VERSION
                        the version to deploy. Defaults to current timestamp
  -l, --list-targets    list available targets
  -a, --deploy-all-targets
                        deploy all targets
  -d, --debug           debug mode (do not remove build dir)
  -L TARGET, --list-projects=TARGET
                        list available projects on TARGET
  --egg=FILE            use the given egg, instead of building it
  --build-egg=FILE      only build the egg, don't deploy it


这篇关于关于Windows部署scrapyd项目报错的两个问题的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程