导入错误:没有名为管道的模块 - Scrapy/PyInstaller

问题描述 投票:0回答:3

我正在尝试从 Scrapy 项目创建一个 exe 文件。我必须添加数十个隐藏导入以避免错误,但现在我得到

ImportError: No module named pipelines
并且我不知道该怎么办。

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

主要.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

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

我真的不知道该怎么办,有什么建议吗?

python windows scrapy python-import pyinstaller
3个回答
0
投票

我认为问题出在这部分

Main.py
:

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

根据提供的项目结构,应为

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

即路径中少一个

engine_bot


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

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

看到我将

engine_bot
重命名为
some_new_name


0
投票
a = Analysis(
    ['app.py'],
    pathex=[],
    binaries=[],
    datas=[],
    hiddenimports=['scrapyTest.pipelines'],  # add your pipelines at this line
    hookspath=[],
    hooksconfig={},
    runtime_hooks=[],
    excludes=[],
    noarchive=False,
    optimize=0,
)

这对我来说是工作。

© www.soinside.com 2019 - 2024. All rights reserved.