2017-11-03 4 views
0

私はScrapyプロジェクトからexeファイルを作成しようとしています。エラーを避けるために数十の隠れたインポートを追加しなければなりませんでしたが、現在はImportError: No module named pipelinesを取得しており、何をすべきかわかりません。ImportError:No pipeline - Scrapy/PyInstaller

bot/ 
    engine_bot/ 
     engine_bot/ 
      spiders/ 
       __init__.py 
       main_spider.py 
      __init__.py 
      items.py 
      middlewares.py 
      pipelines.py 
      settings.py 
      utils.py 
     __init__.py 
     helper.py 
    main.py 
    __init__.py 

Main.py:

from scrapy.crawler import CrawlerProcess 
from engine_bot.engine_bot.spiders.main_spider import MainSpider 


if __name__ == '__main__': 
    process = CrawlerProcess({'BOT_NAME':'engine_bot', 
    'SPIDER_MODULES':['engine_bot.engine_bot.spiders'], 
    'NEWSPIDER_MODULE':'engine_bot.engine_bot.spiders', 
    'ROBOTSTXT_OBEY':False, 
    'DOWNLOAD_DELAY':0.20, 
    'LOG_FILE':'scrapy.log', 
    'LOG_LEVEL':'DEBUG', 
    'ITEM_PIPELINES':{ 
    'engine_bot.engine_bot.pipelines.XmlExportPipeline': 300, 

    } 
    }) 
    process.crawl(MainSpider) 
    process.start() 

celery.log:

2017-11-03 14:01:47 [twisted] CRITICAL: Unhandled error in Deferred: 
2017-11-03 14:01:47 [twisted] CRITICAL: 
Traceback (most recent call last): 
    File "site-packages\twisted\internet\defer.py", line 1386, in _inlineCallbacks 
    File "site-packages\scrapy\crawler.py", line 95, in crawl 
    File "site-packages\scrapy\crawler.py", line 77, in crawl 
    File "site-packages\scrapy\crawler.py", line 102, in _create_engine 
    File "site-packages\scrapy\core\engine.py", line 70, in __init__ 
    File "site-packages\scrapy\core\scraper.py", line 71, in __init__ 
    File "site-packages\scrapy\middleware.py", line 58, in from_crawler 
    File "site-packages\scrapy\middleware.py", line 34, in from_settings 
    File "site-packages\scrapy\utils\misc.py", line 44, in load_object 
    File "importlib\__init__.py", line 37, in import_module 
ImportError: No module named pipelines 

pyInstallerのCMD(隠された輸入品の多くは、scrapy.pipelinesを追加しようとしました)

pyinstaller main.py --hidden-import scrapy.spiderloader --hidden-import scrapy.statscollectors --hidden-import scrapy.logformatter --hidden-import scrapy.extensions.closespider 

--hidden-import scrapy.extensions.feedexport --hidden-import scrapy.extensions.memdebug --hidden-import scrapy.statscollectors --hidden-import scrapy.logformatter --hidden-import scrapy.extensions.closespider --hidden-import scrapy.extensions.feedexport --hidden-import scrapy.extensions.logstats --hidden-import scrapy.spiderloader --hidden-import scrapy.statscollectors --hidden-import scrapy.logformatter --hidden-import scrapy.extensions.closespider --hidden-import scrapy.extensions.feedexport --hidden-import scrapy.spiderloader --hidden-import scrapy.statscollectors --hidden-import scrapy.logformatter --hidden-import scrapy.extensions.closespider --hidden-import scrapy.extensions.feedexport --hidden-import scrapy.extensions.telnet --hidden-import scrapy.spiderloader --hidden-import scrapy.statscollectors --hidden-import scrapy.logformatter --hidden-import scrapy.extensions.closespider --hidden-import scrapy.extensions.feedexport --hidden-import scrapy.extensions.memusage --hidden-import scrapy.spiderloader --hidden-import scrapy.statscollectors --hidden-import scrapy.logformatter --hidden-import scrapy.extensions.closespider --hidden-import scrapy.extensions.feedexport --hidden-import scrapy.extensions.logstats --hidden-import scrapy.spiderloader --hidden-import scrapy.statscollectors --hidden-import scrapy.logformatter --hidden-import scrapy.extensions.closespider --hidden-import scrapy.extensions.feedexport --hidden-import scrapy.spiderloader --hidden-import scrapy.statscollectors --hidden-import scrapy.logformatter --hidden-import scrapy.extensions.closespider --hidden-import scrapy.extensions.corestats --hidden-import scrapy.extensions.spiderstate --hidden-import scrapy.extensions.throttle --hidden-import scrapy.core.scheduler --hidden-import scrapy.core.downloader --hidden-import scrapy.downloadermiddlewares.robotstxt --hidden-import scrapy.downloadermiddlewares.httpauth --hidden-import scrapy.downloadermiddlewares.downloadtimeout --hidden-import scrapy.downloadermiddlewares.useragent --hidden-import scrapy.downloadermiddlewares.defaultheaders --hidden-import scrapy.downloadermiddlewares.ajaxcrawl --hidden-import scrapy.downloadermiddlewares.retry --hidden-import scrapy.downloadermiddlewares.redirect --hidden-import scrapy.downloadermiddlewares.cookies --hidden-import scrapy.downloadermiddlewares.httpcompression --hidden-import scrapy.downloadermiddlewares.httpproxy --hidden-import scrapy.downloadermiddlewares.httpcache --hidden-import scrapy.downloadermiddlewares.stats --hidden-import scrapy.downloadermiddlewares.chunked --hidden-import scrapy.downloadermiddlewares.decompression --hidden-import scrapy.downloadermiddlewares.httperror --hidden-import scrapy.downloadermiddlewares.stats --hidden-import scrapy.downloadermiddlewares.stats --hidden-import scrapy.spidermiddlewares.depth --hidden-import scrapy.spidermiddlewares.httperror --hidden-import scrapy.spidermiddlewares.offsite --hidden-import scrapy.spidermiddlewares.referer --hidden-import scrapy.spidermiddlewares.urllength --hidden-import scrapy.pipelines --hidden-import engine_bot.pipelines

私は本当に何をすべきか、アドバイスはないのですか?

答えて

0

私はこの問題はMain.pyのこの部分にあると思う:

'ITEM_PIPELINES':{ 
    'engine_bot.engine_bot.pipelines.XmlExportPipeline': 300, 
} 

提供プロジェクト構造によれば、パス内の1つのengine_bot少ない

'ITEM_PIPELINES':{ 
    'engine_bot.pipelines.XmlExportPipeline': 300, 
} 

すなわちをお読みください。

bot/ 
    some_new_name/ 
     engine_bot/ 
      spiders/ 
       __init__.py 
       main_spider.py 
      __init__.py 
      items.py 
      middlewares.py 
      pipelines.py 
      settings.py 
      utils.py 
     __init__.py 
     helper.py 
    main.py 
    __init__.py 

+0

engine_botと改名参照してください。 main.pyはbot_dirではなくengine_botにあります。 –

+0

ええ、そうですが、このモジュールはScrapyによって読み込まれ、設定から読み込みます。私はこれがプロジェクトディレクトリに対して相対的であるべきだと考えました。しかし明らかにそうではありません。 –

0

bot/ 
    engine_bot/ 
     engine_bot/ 
      spiders/ 
       __init__.py 
       main_spider.py 
      __init__.py 
      items.py 
      middlewares.py 
      pipelines.py 
      settings.py 
      utils.py 
     __init__.py 
     helper.py 
    main.py 
    __init__.py 

から変更プロジェクトstrucutreは、私は、私はそれを試みたが成功せずsome_new_name

+0

残念ながら、これも役に立たなかった。同じエラーが発生します。 –

+0

@MilanoSlesarikあなたは '' engine_bot.engine_bot.pipelines.XmlExportPipeline ':300'を '' some_new_name.engine_bot.pipelines.XmlExportPipeline':300'に変更しましたか? – Umair