Pyinstaller and Ply IOError: source code not available

余生长醉 提交于 2019-12-02 08:56:21

问题


I am pretty new to pyinstaller but I have been banging my head against this problem for a couple of days now and I can't seem to figure out what's wrong. My script runs fine normally but throws IOerror when i try to build with pyinstaller, my modules (including ply.lex) seem to be included but maybe i'm being an idiot? If anyone has any advice it would be much appreciated...

Here's my error (line 65 is where my lexer is built)

  Traceback (most recent call last):
  File "<string>", line 65, in <module>
  File "site-packages/ply/lex.py", line 906, in lex
  File "site-packages/ply/lex.py", line 580, in validate_all
  File "site-packages/ply/lex.py", line 822, in validate_rules
  File "site-packages/ply/lex.py", line 833, in validate_module
  File "inspect.py", line 690, in getsourcelines
  File "inspect.py", line 529, in findsource
IOError: source code not available

If anyone has seen this problem before, or can help that would be awesome.


回答1:


PLY insists that its grammars be defined in files. Real files, with names and everything. I think that's because of its strategy to cache the computed grammar tables, which involves comparing the timestamp of the cached tables with the timestamp of the original file.

Pyinstaller is, apparently, evaluating the grammar as a <string>, since it is extracted from an archive rather than being a file. (The Pyinstaller manual mentions that __file__ is not correctly set for the frozen application, and that is what PLY is looking at.) You might try using the --onedir option when you create your installer bundle, but of course that has slightly different behaviour.




回答2:


it seems that with PLY it is necessary to include the py file itself as described on THIS link, the workaround solution is to add the file in the .spec file generated by pyinstaller as below :

datas=[('calc.py','.')]

see pyinstaller Using spec file for details on adding a file into your executable



来源:https://stackoverflow.com/questions/35589881/pyinstaller-and-ply-ioerror-source-code-not-available

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!