Pyinstaller scrapy错误:

时间:2014-08-28 20:43:42

标签: python windows-7 scrapy pyinstaller scrapy-spider

在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。

非常感谢您的帮助。

2 个答案:

答案 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”文件)