2017-09-21 8 views
0

彼は私のscrapyスクリプトを実行するためのdjango管理コマンドを作成しようとしています。 しかし、スクリプトを実行している間、私は次のエラーを取得しています、scrap crawlを実行するためのDjango管理コマンド

File "manage.py", line 22, in <module> 
    execute_from_command_line(sys.argv) 
    File "C:\Users\Anaconda3\lib\site-packages\django\core\management\__init__.py", line 367, in execute_from_command_line 
    utility.execute() 
    File "C:\Users\Anaconda3\lib\site-packages\django\core\management\__init__.py", line 359, in execute 
    self.fetch_command(subcommand).run_from_argv(self.argv) 
    File "C:\Users\myProject\scraper\management\commands\extract_data.py", line 13, in run_from_argv 
    self.execute() 
    File "C:\Users\Anaconda3\lib\site-packages\django\core\management\base.py", line 314, in execute 
    if options['no_color']: 
KeyError: 'no_color' 

あなたread the sourcerun_from_argv()self._called_from_command_lineフラグを設定し、適切のような他の重要なものの中で(責任がある場合にはこれが私のコード

from __future__ import absolute_import 
from django.core.management.base import BaseCommand 


class Command(BaseCommand): 

    def run_from_argv(self, argv): 
     self._argv = argv 
     self.execute() 

    def handle(self, *args, **options): 
     from scrapy.cmdline import execute 
     execute(self._argv[1:]) 
+0

はスクレーパーが配置されていますか? –

答えて

0

です実行後のdb接続をクローズする)、効果的に構文解析するargv期待されるオプションのデフォルト値を( "no_color"のいずれかである)に設定し、self.execute()と解析された引数とオプションがあります。

親の実装を呼び出さずにrun_from_argvをオーバーライドしています。上のいずれも実行されていません。self.execute()を適切に設定しないで呼び出すディレクティブです。options dict

最も簡単な解決策だけargvにあなたの参照を保持して、親の実装すなわち上で呼び出すことは明らかである:どのような場所で

def run_from_argv(self, argv): 
    # keep a copy because the parent might modify `argv` 
    self._argv = argv[:] 
    super(Command, self).run_from_argv(argv) 
関連する問題