没有命名的模块项目.设置使用时子流程.Popen

2024-09-30 01:35:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我有刮擦爬虫网站。在某些情况下,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。在

我哪里错了?请帮忙?在


Tags: inpyhomebinsettingsliblinesite
2条回答

我建议让python专注于scrape任务,并使用其他方法进行进程控制。如果是我,我会写一个小bash脚本来运行你的程序。在

通过使用env -i yourscript.sh运行启动程序脚本来测试它是否正常工作,因为这将确保它在没有任何继承的环境设置的情况下运行。在

一旦bash脚本正常工作,包括设置virtualenv等,就可以让python运行bash脚本,而不是python。在这一点上,您已经避开了任何奇怪的环境问题,并为自己提供了一个非常可靠的启动程序脚本。在

更妙的是,如果此时有bash脚本,可以使用“适当的”进程控制器(daemontools、supervisor…)启动进程,在崩溃时重新启动等等

似乎没有正确加载中的设置。一种解决方案是在启动爬虫程序之前构建一个egg并将其部署到env中。在

正式文件,Eggify scrapy project

相关问题 更多 >

    热门问题