2012-08-31 23 views
8

これは非常に長い投稿ですが、広範な調査を行った後、解決策を見つけることができませんでした。私は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サーバーは正常に動作しているようですが、どうすれば自分のスパイダーを正しくアップロードできますか?

事前に感謝します。

答えて

2

wiki of scrapy内の3つのリンクがあります。

the first onesecond oneは両方のジャンゴとscrapy矛盾する設定で問題に対処しています。このことができます

希望...

はSO上でもthis questionはジャンゴとscrapy

+1

私にwikiを指摘していただきありがとうございます。私はScrapyのgithubページにコミュニティwikiがあるという事実を知らなかった。 [このチュートリアル](http://www.sammyliu.com/2012/06/22/tutorial-scrapy-and-django)は私に本質的な手がかりを与えました。私は 'scrapy.cfg'ファイルを移動するだけでなくDjangoプロジェクトの一番上のディレクトリだけでなく、Scrapyのプロジェクトディレクトリ全体に渡します。これで、私のスパイダーはScrapydサーバーに正しくアップロードされ、すべての環境変数が認識されます。それで、あなたが正しい方向に私を指摘して以来、私はあなたに賞金を授与します。ダーク、ラルフ:) – pemistahl

2

あなたはcode branch that raises this exceptionを見れば、それが呼び出すことdefinition of the closest_scrapy_cfg function、唯一の場所との間に設定-多くの問題に取り組みますscrapyがあなたのscrapy.cfgを探していれば、あなたは親ディレクトリからコマンドを実行します。あなたはmanage.pyにos.chdirを実行するか、実行中のディレクトリにscrapy.cfgを移動することができます。

+0

'scrap.cfg'ファイルを' manage.py'ファイルと同じディレクトリに移動しようとしました。それは動作しますが、私のスパイダーのどれもがサーバーにアップロードされていないという問題は依然として存在します。環境変数のエクスポートは機能しません。 – pemistahl

関連する問題