Scrapyd Deploy:由于使用os路径设置目录而导致的错误

Scrapyd Deploy:由于使用os路径设置目录而导致的错误,scrapy,scrapyd,scrapyd-deploy,Scrapy,Scrapyd,Scrapyd Deploy,我正试图通过scrapyd deploy将scrapy项目部署到远程scrapyd服务器。当我通过git push prod将项目部署到远程服务器时,项目本身就可以正常工作,在本地机器和远程服务器上都可以完美地工作 使用scrapyd deploy时,我会遇到以下错误: %scrapyd部署示例-p apo {“node_name”:“spider1”, “状态”:“错误”, “消息”:“/usr/local/lib/python3.8/dist packages/scrapy/utils/pr

我正试图通过scrapyd deploy将scrapy项目部署到远程scrapyd服务器。当我通过git push prod将项目部署到远程服务器时,项目本身就可以正常工作,在本地机器和远程服务器上都可以完美地工作

使用scrapyd deploy时,我会遇到以下错误:

%scrapyd部署示例-p apo

{“node_name”:“spider1”,
“状态”:“错误”,
“消息”:“/usr/local/lib/python3.8/dist packages/scrapy/utils/project.py:90:scrapydeproductionwarning:不推荐使用前缀为scrapy的环境变量来覆盖设置。当前已定义以下环境变量:EGG\u VERSION\n warnings.warn(\n回溯(最近一次调用):\n File\”/usr/lib/python3.8/runpy.py\”,第193行,在“运行”模块中作为“主”返回“运行”代码(代码,主全局,无,文件\“/usr/lib/python3.8/runpy.py\”,第86行,在“运行”代码\n执行(代码,运行全局)\n文件\“/usr/local/lib/python3.8/dist packages/scrapyd/runner.py\”,第40行,主文件\“/usr/local/lib/python3.8/dist packages/scrapyd/runner.py\”,第37行,在主文件\n execute()\n File\“/usr/local/lib/python3.8/dist packages/scrapy/cmdline.py\”,第142行,在执行\n cmd.crawler\u进程=CrawlerProcess(设置)\n文件\“/usr/local/lib/python3.8/dist packages/scrapy/crawler.py\”,第280行,在超级文件中(CrawlerProcess,self)。\uuuuu init\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu(设置)\n文件\“/usr/local/lib/python3.8/dist packages/scrapys/crawler.py\”,第152行,在“获取蜘蛛加载程序”中,返回CLU设置中(settings.frozencopy())\n File\“/usr/local/lib/python3.8/dist packages/scrapy/spiderloader.py\”,第60行,在from\u settings\n return cls(settings)\n File\“/usr/local/lib/python3.8/dist packages/scrapys/spiderloader.py\”,第24行,在/usr/local/lib/python3.8/dist-spiderloader\n self.py\。\u加载所有spiders()\n spiderloader\n文件\/usr\“,第46行,用于walk\u模块中的模块(名称):\n File\”/usr/local/lib/python3.8/dist packages/scrapy/utils/misc.py\”,第77行,walk\u模块\n submod=import\u模块(完整路径)\n File\“/usr/lib/python3.8/importlib/\uu init.py\”,
第127行,在导入模块中\n返回\u引导。\u gcd\u导入(名称[级别:],包,级别)\n文件\“\”,
第1014行,在\u gcd\u导入文件\“\”中,
第991行,在“查找和加载文件”中,
第975行,在“查找”和“加载”解锁文件\“\”中,
第655行,在“加载未锁定的\n文件”中,
第618行,在“向后加载兼容文件”中,
第259行,加载模块\n文件\“/tmp/apo-v1.0.2-114-g8a2f218-master-5kgzzesk.egg/bid/spider/allaboutwatches.py\”,
第31行,在\n文件\“/tmp/apo-v1.0.2-114-g8a2f218-master-5kgzxesk.egg/bid/spider/allaboutwatches.py \”中,
第36行,在GetbidSpider\n文件\“/tmp/apo-v1.0.2-114-g8a2f218-master-5kgzzesk.egg/bid/act_functions.py \”中,
第10行,在create_image_dir\n目录错误:[Errno 20]
不是目录:'/tmp/apo-v1.0.2-114-g8a2f218-master-5kgzzesk.egg/bid/。/images/allaboutwatches'\n'}
我的猜测是,它与我调用的这个方法有关,因为一旦我对方法调用的注释超过,部分错误就会消失:

# function will create a custom name directory to hold the images of each crawl
def create_image_dir(name):
    project_dir = os.path.dirname(__file__)+'/../' #<-- absolute dir the script is in
    img_dir     = project_dir+"images/"+name
    if not os.path.exists(img_dir):
        os.mkdir(img_dir);
    custom_settings = {
        'IMAGES_STORE': img_dir ,
    }
    return custom_settings
#函数将创建一个自定义名称目录来保存每个爬网的图像
def创建图像目录(名称):
project_dir=os.path.dirname(_file__;)+'/../'.\ul>
  • os.mkdir
    可能会失败,因为它无法创建嵌套目录。您可以改用
    os.makedirs(img\u dir,exist\u ok=True)
  • os.path.dirname(\uuu file\uuuu)
    将指向scrapyd下的/tmp/…不确定这是否是您想要的。我将使用绝对路径而不调用
    os.path.dirname(_文件)
    如果您不想在/tmp下下载图像
      • os.mkdir
        可能会失败,因为它无法创建嵌套目录。您可以改用
        os.makedirs(img\u dir,exist\u ok=True)
      • os.path.dirname(\uuu file\uuuu)
        将指向scrapyd下的/tmp/…不确定这是否是您想要的。我将使用绝对路径而不调用
        os.path.dirname(_文件)
        如果您不想在/tmp下下载图像

      Trank you。这很有意义。我现在离你有点近,但仍然无法部署。我提出了一个新问题,也许你也可以看一看?Trank you。这很有意义。我现在离你有点近,但仍然无法部署。我提出了一个新问题,也许你也可以看一看?
      # function will create a custom name directory to hold the images of each crawl
      def create_image_dir(name):
          project_dir = os.path.dirname(__file__)+'/../' #<-- absolute dir the script is in
          img_dir     = project_dir+"images/"+name
          if not os.path.exists(img_dir):
              os.mkdir(img_dir);
          custom_settings = {
              'IMAGES_STORE': img_dir ,
          }
          return custom_settings
      
      def brandnames():
          brands = dict()
      
          script_dir = os.path.dirname(__file__) #<-- absolute dir the script is in
          rel_path = "imports/brand_names.csv"
          abs_file_path = os.path.join(script_dir, rel_path)
      
          with open(abs_file_path, newline='') as csvfile:
              reader = csv.DictReader(csvfile, delimiter=';', quotechar='"')
              for row in reader:
                  brands[row['name'].lower()] = row['name']
          return brands