これは非常に長い投稿ですが、広範な調査を行った後、解決策を見つけることができませんでした. 私は OSX 10.8 で Django 1.4.1 / Scrapy 0.14.4 プロジェクトを混在させており、ここでmanage.py
説明されているように Django プロジェクトのコマンドで Scrapy を制御しています。たとえば、
python manage.py scrapy crawl example_spider
問題なく動作します。scrapyd
これで、 Web サービスをセットアップしてスパイダーをデプロイする段階になりました。ただし、実行すると
python manage.py scrapy server
次に、この例外が発生します。
scrapy.exceptions.NotConfigured: Unable to find scrapy.cfg file to infer project data dir
scrapy.cfg
したがって、 Scrapy プロジェクト内から実行しないため、Scrapy はファイルを見つけられないようです。ただし、他の Scrapy コマンドは機能します。これは、私の Django プロジェクトsettings.py
で次のことを行ったためです。
sys.path.append('/absolute/path/to/my/Scrapy/project')
os.environ['SCRAPY_SETTINGS_MODULE'] = 'my_scrapy_project_name.settings'
質問 1: Scrapy がscrapy.cfg
セットアップでファイルを検出できないのはなぜですか? どうすればこれを解決できますか?
上記のものは機能しないため、Scrapy プロジェクトディレクトリ内からコマンドscrapyd
だけを使用してサーバーを実行しようとしました。Scrapy プロジェクトの最上位ディレクトリから実行すると、次の結果が得られますscrapy
。scrapy server
$ scrapy server
UserWarning: Cannot import scrapy settings module my_scrapy_project_name.settings
warnings.warn("Cannot import scrapy settings module %s" % scrapy_module)
2012-08-31 21:58:31+0200 [-] Log opened.
2012-08-31 21:58:32+0200 [-] Scrapyd web console available at http://localhost:6800/
2012-08-31 21:58:32+0200 [Launcher] Scrapyd started: max_proc=8, runner='scrapyd.runner'
2012-08-31 21:58:32+0200 [-] Site starting on 6800
2012-08-31 21:58:32+0200 [-] Starting factory <twisted.web.server.Site instance at 0x101dd3d88>
サーバーは問題なく実行settings.py
されていますが、それぞれの環境変数が設定されていないため、Scrapy プロジェクトのファイルが見つかりません。そのため、端末で次のことを行います。
export PYTHONPATH=/absolute/path/to/my/Scrapy/project
export SCRAPY_SETTINGS_MODULE=my_scrapy_project_name.settings
残念ながら、これら 2 つのコマンドは効果がありません。scrapy server
(または他の Scrapy コマンドを)実行するたびに、Scrapy がそのプロジェクトの設定モジュールをインポートできないというメッセージが表示されます。
scrapy.cfg
現時点では、次のコンテンツしかありません。
[settings]
default = my_scrapy_project_name.settings
[deploy:scrapyd]
url = http://localhost:6800/
project = my_scrapy_project_name
Scrapy プロジェクトをscrapyd
サーバーにデプロイしようとすると、最初はうまくいくように見えますが、おそらく設定ファイルが検出されなかったため、スパイダーがアップロードされていないことに気付きました。コンソール出力は次のとおりです。
$ scrapy deploy scrapyd -p my_scrapy_project_name
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-
packages/scrapy/utils/project.py:17: UserWarning: Cannot import scrapy
settings module my_scrapy_project_name.settings
warnings.warn("Cannot import scrapy settings module %s" %
scrapy_module)
Building egg of event_crawler-1346531706
'build/lib' does not exist -- can't clean it
'build/bdist.macosx-10.6-intel' does not exist -- can't clean it
'build/scripts-2.7' does not exist -- can't clean it
zip_safe flag not set; analyzing archive contents...
Deploying event_crawler-1346531706 to http://localhost:6800/addversion.json
Server response (200):
{"status": "ok", "project": "my_scrapy_project_name", "version": "1346531706", "spiders": 0}
質問 2:上記のパスと環境変数を正しくエクスポートして、この警告が表示されないようにする方法を教えてください。
質問 3:サーバーはscrapyd
正常に動作しているようですが、スパイダーを正しくアップロードするにはどうすればよいですか?
よろしくお願いします!