在Windows 32bit上安装scrapy的所有依赖项之后。我试图从我的scrapy蜘蛛中构建一个可执行文件。蜘蛛脚本" runspider.py"以" python runspider.py"
运行时运行正常构建可执行文件" pyinstaller --onefile runspider.py":
C:\ Users \ username \ Documents \ scrapyexe> pyinstaller --onefile runspider.py 19 INFO:写道 C:\ Users \ username \ Documents \ scrapyexe \ runspider.spec 49信息:测试 能够设置图标,版本资源... 59 INFO:...资源 更新可用59 INFO:UPX不可用。 89信息:处理 hook hook-os 279 INFO:处理挂钩挂钩时间279 INFO:处理 hook hook-cPickle 380 INFO:Processing hook hook-_sre 561 INFO: 处理钩子钩子-cStringIO 700 INFO:处理钩子 hook-encodings 720 INFO:处理钩子钩子编解码器1351信息: 使用C:\ Users \ username \ Documents \ scrapyexe 1351扩展PYTHONPATH 信息:检查分析1351信息:构建分析因为 out00-Analysis.toc不存在1351 INFO:运行Analysis out00-Analysis.toc 1351 INFO:将Microsoft.VC90.CRT添加到依赖项 最终可执行文件的集合
1421 INFO:搜索程序集 x86_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.21 022.8_none ... 1421信息:找到清单C:\ Windows \ WinSxS \ Manifests \ x86_microsoft.vc90.crt_1fc 8b3b9a1e18e3b_9.0.21022.8_none_bcb86ed6ac711f91.manifest 1421信息: 正在搜索文件msvcr90.dll 1421 INFO:找到的文件 C:\ WINDOWS \ WinSxS文件\ x86_microsoft.vc90.crt_1fc8b3b9a1e18e3b_ 9.0.21022.8_none_bcb86ed6ac711f91 \ msvcr90.dll 1421信息:搜索文件msvcp90.dll 1421 INFO:找到的文件 C:\ WINDOWS \ WinSxS文件\ x86_microsoft.vc90.crt_1fc8b3b9a1e18e3b_ 9.0.21022.8_none_bcb86ed6ac711f91 \ msvcp90.dll 1421信息:搜索文件msvcm90.dll 1421信息:找到的文件 C:\ WINDOWS \ WinSxS文件\ x86_microsoft.vc90.crt_1fc8b3b9a1e18e3b_ 9.0.21022.8_none_bcb86ed6ac711f91 \ msvcm90.dll 1592 INFO:分析C:\ python27 \ lib \ site-packages \ PyInstaller \ loader_pyi_boots trap.py 1621 INFO:处理钩子hook-os 1661 INFO:处理钩子 hook-site 1681 INFO:处理挂钩钩编码1872信息: 处理挂钩挂钩时间1872 INFO:处理钩钩-cPickle 1983 信息:处理钩子钩子_sre 2173信息:处理钩子 hook-cStringIO 2332 INFO:处理钩子钩子编解码器2963信息: 处理钩子钩子-pydoc 3154 INFO:处理挂钩钩子 - 电子邮件3255 INFO:处理钩子钩子-suclib 3305 INFO:处理钩子 hook-email.message 3444信息:分析 C:\ python27 \ lib \ site-packages \ PyInstaller \ loader \ pyi_import \ n ers.py 3535 INFO:分析 C:\ python27 \ lib \ site-packages \ PyInstaller \ loader \ pyi_archiv e.py 3615 信息:分析 C:\ python27 \ lib \ site-packages \ PyInstaller \ loader \ pyi_carchi ve.py 3684 信息:分析 C:\ python27 \ lib \ site-packages \ PyInstaller \ loader \ pyi_os_pat h.py 3694 信息:分析runspider.py 3755警告:没有django根目录 可以找到! 3755 INFO:Processing hook hook-django 3785信息: 处理hook hook -lxml.etree 4135 INFO:处理hook hook-xml 4196 INFO:处理钩子hook-xml.dom 4246 INFO:处理钩子 hook-xml.sax 4296 INFO:处理钩子hook-pyexpat 4305信息: 处理钩子hook-xml.dom.domreg 4736 INFO:处理钩子 hook-pywintypes 5046信息:处理钩子hook-distutils 7750信息: 隐藏导入'编解码器'已被发现7750信息:隐藏 导入'编码'已找到7750 INFO:正在寻找 运行时挂钩7750信息:分析rthook C:\ python27 \ LIB \站点包\ PyInstaller \装载机\ r个 ooks \ pyi_rth_twisted.py 8111信息:分析rthook C:\ python27 \ LIB \站点包\ PyInstaller \装载机\ r个 ooks \ pyi_rth_django.py 8121 INFO:处理钩子-django.core 8131 INFO:处理钩子hook-django.core.management 8401信息: 处理钩子钩子-django.core.mail 8862 INFO:处理钩子 hook-django.db 9112信息:处理钩子-django.db.backends 9153 信息:处理钩子钩子-django.db.backends.mysql 9163信息: 处理钩子-django.db.backends.mysql.base 9163信息: 处理钩子hook -django.db.backends.oracle 9183 INFO:处理 hook hook -django.db.backends.oracle.base 9253 INFO:处理钩子 hook-django.core.cache 9874 INFO:处理钩子hook-sqlite3 10023 信息:处理钩子钩子-django.contrib 10023 INFO:处理钩子 hook-django.contrib.sessions 11887信息:使用Python库 C:\ Windows \ system32 \ python27.dll 12226信息:写入警告 C:\ Users \用户名\文档\ scrapyexe \建立\ runspid er \ warnrunspider.txt 12256信息:检查PYZ 12256信息:重建 out00-PYZ.toc因为out00-PYZ.pyz缺少12256 INFO:building PYZ(ZlibArchive)out00-PYZ.toc 16983信息:检查PKG 16993信息: 重建out00-PKG.toc,因为缺少out00-PKG.pkg 16993 INFO: 构建PKG(CArchive)out00-PKG.pkg 19237信息:检查EXE 19237 信息:重建out00-EXE.toc因为runspider.exe缺少19237 信息:从out00-EXE.toc构建EXE 19237 INFO:将存档追加到 EXE C:\ Users \ username \ Documents \ scrapyexe \ dist \ run spider.exe
运行内置的exe" runspider.exe":
C:\ Users \用户名\文件\ scrapyexe \ DIST> runspider.exe
追踪(最近一次呼叫最后一次):
文件"",第2行,
File" C:\ python27 \ Lib \ site-packages \ PyInstaller \ loader \ pyi_importers.py",line 270,在load_module
exec(字节码,模块。字典)
文件" C:\ Users \ username \ Documents \ scrapyexe \ build \ runspider \ out00-PYZ.pyz \ scrapy" ,第10行,
文件" C:\ Users \ username \ Documents \ scrapyexe \ build \ runspider \ out00-PYZ.pyz \ pkgutil ",第591行,在get_data
中File" C:\ python27 \ Lib \ site-packages \ PyInstaller \ loader \ pyi_importers.py",line 342,在get_data
中fp = open(路径,' rb')
IOError:[Errno 2]没有这样的文件或目录:' C:\ Users \ username \ AppData \ Local \ \ TEMP \ _MEI15522 \ scrapy \ VERSION'
我对任何帮助都非常有帮助。我需要知道如何从scrapy spider for windows构建独立的exe。
非常感谢您的帮助。
答案 0 :(得分:3)
在scrapy/__init__.py
内,您会看到作者使用的部分pkgutil.get_data()
。我不太确定你是否需要向pyinstaller表明scrapy / VERSION文本文件像数据文件一样被打包,或者pkgutil.get_data完全适用于pyinstaller,但是我使用的是快速黑客攻击。
只需转到__init__.py
文件,注释掉这两行,然后替换为您选择的字符串,例如__version__="scrap-123"
。您将需要__version__
,因为它在另一个模块中被引用。
__version__ = pkgutil.get_data(__package__, 'VERSION').decode('ascii').strip()
version_info = tuple(int(v) if v.isdigit() else v
for v in __version__.split('.'))
答案 1 :(得分:0)
您需要在与runspider.exe(由pyinstaller生成的exe文件)相同的目录下创建一个scrapy文件夹。
然后将“ VERSION”和“ mime.types”文件(默认路径:%USERPROFILE%\AppData\Local\Programs\Python\Python37\Lib\site-packages\scrapy
)复制到刚创建的scrappy文件夹中的scrapy上。 (如果仅复制“ VERSION”,则会提示您找到“ mime.types”文件)