这是一篇相当长的文章,但经过广泛的研究后我找不到解决方案。我在 OSX 10.8 上有一个混合的 Django 1.4.1 / Scrapy 0.14.4 项目,我用 Django 项目的控制 Scrapymanage.py
如上所述的命令here。例如,调用
python manage.py scrapy crawl example_spider
工作没有问题。现在我想要设置scrapyd
用于部署我的蜘蛛的网络服务。但是,当我执行
python manage.py scrapy server
然后我得到这个异常:
scrapy.exceptions.NotConfigured: Unable to find scrapy.cfg file to infer project data dir
所以,显然Scrapy找不到scrapy.cfg
文件,因为我不从 Scrapy 项目中执行它。然而,其他 Scrapy 命令可以工作,因为在我的 Django 项目中settings.py
我做了以下事情:
sys.path.append('/absolute/path/to/my/Scrapy/project')
os.environ['SCRAPY_SETTINGS_MODULE'] = 'my_scrapy_project_name.settings'
问题一:为什么Scrapy检测不到scrapy.cfg
我的设置中的文件?我该如何解决这个问题?
由于上面提到的东西不起作用,我尝试获取scrapyd
服务器运行仅使用scrapy
来自我的 Scrapy 项目目录中的命令。执行中scrapy server
从我的 Scrapy 项目的顶级目录生成以下内容:
$ 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
不幸的是,这两个命令没有任何作用。每当我执行scrapy server
(或任何其他 Scrapy 命令),我收到消息 Scrapy 无法导入其项目的设置模块。
My 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
服务器似乎工作正常,我怎样才能正确上传我的蜘蛛?
提前谢谢了!