我有刮擦爬虫网站。在某些情况下,scrapy会因为RAM问题而自杀。我重写了蜘蛛,使它可以分裂和运行的一个网站。在
在初始运行之后,我使用子流程.Popen用新的开始项再次提交垃圾爬虫。在
但我错了
ImportError: No module named shop.settingsTraceback (most recent call last):
File "/home/kumar/envs/ishop/bin/scrapy", line 4, in <module> execute()
File "/home/kumar/envs/ishop/lib/python2.7/site-packages/scrapy/cmdline.py", line 109, in execute settings = get_project_settings()
File "/home/kumar/envs/ishop/lib/python2.7/site-packages/scrapy/utils/project.py", line 60, in get_project_settings settings.setmodule(settings_module_path, priority='project')
File "/home/kumar/envs/ishop/lib/python2.7/site-packages/scrapy/settings/__init__.py", line 109, in setmodule module = import_module(module)
File "/usr/lib64/python2.7/importlib/__init__.py", line 37, in import_module __import__(name)ImportError: No module named shop.settings
子流程cmd是
newp = Popen(comm, stderr=filename, stdout=filename, cwd=fp, shell=True)
通信-
source /home/kumar/envs/ishop/bin/activate && cd /home/kumar/projects/usg/shop/spiders/../.. && /home/kumar/envs/ishop/bin/scrapy crawl -a category=laptop -a site=newsite -a start=2 -a numpages=10 -a split=1 'allsitespider'
cwd-/home/kumar/projects/usg
我查过了系统路径它是正确的['/home/kumar/envs/ishop/bin', '/home/kumar/envs/ishop/lib64/python27.zip', '/home/kumar/envs/ishop/lib64/python2.7', '/home/kumar/envs/ishop/lib64/python2.7/plat-linux2', '/home/kumar/envs/ishop/lib64/python2.7/lib-tk', '/home/kumar/envs/ishop/lib64/python2.7/lib-old', '/home/kumar/envs/ishop/lib64/python2.7/lib-dynload', '/usr/lib64/python2.7', '/usr/lib/python2.7', '/home/kumar/envs/ishop/lib/python2.7/site-packages']
但是看起来import语句使用的是"/usr/lib64/python2.7/importlib/__init__.py"
,而不是我的虚拟env。在
我哪里错了?请帮忙?在
我建议让python专注于scrape任务,并使用其他方法进行进程控制。如果是我,我会写一个小bash脚本来运行你的程序。在
通过使用
env -i yourscript.sh
运行启动程序脚本来测试它是否正常工作,因为这将确保它在没有任何继承的环境设置的情况下运行。在一旦bash脚本正常工作,包括设置virtualenv等,就可以让python运行bash脚本,而不是python。在这一点上,您已经避开了任何奇怪的环境问题,并为自己提供了一个非常可靠的启动程序脚本。在
更妙的是,如果此时有bash脚本,可以使用“适当的”进程控制器(daemontools、supervisor…)启动进程,在崩溃时重新启动等等
似乎没有正确加载中的设置。一种解决方案是在启动爬虫程序之前构建一个egg并将其部署到env中。在
正式文件,Eggify scrapy project
相关问题 更多 >
编程相关推荐