これは非常に長い投稿ですが、広範な調査を行った後、解決策を見つけることができませんでした。私はOSX 10.8上で混合Django 1.4.1/Scrapy 0.14.4プロジェクトを持っていて、Djangoプロジェクトのmanage.py
コマンドを使ってScrapyを制御しています(here)。たとえば、Scrapyの設定モジュールまたはそのscrapy.cfgをインポートできません
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プロジェクトの中から、それを実行していないので、だから、明らかにScrapyはscrapy.cfg
ファイルを見つけることができません。
sys.path.append('/absolute/path/to/my/Scrapy/project')
os.environ['SCRAPY_SETTINGS_MODULE'] = 'my_scrapy_project_name.settings'
質問1:はなぜ私のセットアップでscrapy.cfg
ファイルを検出Scrapyできないのですか?私のジャンゴプロジェクトのsettings.py
に、私は次のことをやったので、他のScrapyは、しかし、仕事コマンドどうすれば解決できますか?
上記のようなものは動作しませんので、私は私のScrapyプロジェクトディレクトリ内からだけscrapy
コマンドを使用して実行しているscrapyd
サーバーを取得しようとしました。私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>
サーバが問題なく実行されているそれぞれの環境変数ではないので、しかし、私のScrapyプロジェクトのsettings.py
ファイルが見つかりませんもうセットする。だから私は私の端末で次のようにします:
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
私はscrapyd
サーバに私のScrapyプロジェクトを展開しようと、最初に動作しているようですが、その後私は気づいたのどれもおそらく設定ファイルが検出できなかったため、スパイダーがアップロードされています。ここでは、コンソール出力は次のようになります。
$ 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
サーバーは正常に動作しているようですが、どうすれば自分のスパイダーを正しくアップロードできますか?
事前に感謝します。
私にwikiを指摘していただきありがとうございます。私はScrapyのgithubページにコミュニティwikiがあるという事実を知らなかった。 [このチュートリアル](http://www.sammyliu.com/2012/06/22/tutorial-scrapy-and-django)は私に本質的な手がかりを与えました。私は 'scrapy.cfg'ファイルを移動するだけでなくDjangoプロジェクトの一番上のディレクトリだけでなく、Scrapyのプロジェクトディレクトリ全体に渡します。これで、私のスパイダーはScrapydサーバーに正しくアップロードされ、すべての環境変数が認識されます。それで、あなたが正しい方向に私を指摘して以来、私はあなたに賞金を授与します。ダーク、ラルフ:) – pemistahl