我正在尝试从 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
我真的不知道该怎么办,有什么建议吗?
我认为问题出在这部分
Main.py
:
'ITEM_PIPELINES':{
'engine_bot.engine_bot.pipelines.XmlExportPipeline': 300,
}
根据提供的项目结构,应为
'ITEM_PIPELINES':{
'engine_bot.pipelines.XmlExportPipeline': 300,
}
即路径中少一个
engine_bot
。
更改项目结构
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
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,
)
这对我来说是工作。