Python 2.7 ply.yacc 在 pyinstaller 中生成"cannot get source"错误



我从一个已经离开公司的人那里"继承"了一个python应用程序,现在我很难让它在他自己的盒子里的模糊设置之外工作。

基本上我已经经历了一切,使它很好地编译和收集所有必要的模块,所以没有问题。它在python中运行得很漂亮。然而,编译后的版本给了我这个:

LOADER: executable is C:DSLRv4sourcedistSUATSUAT.exe
LOADER: homepath is C:DSLRv4sourcedistSUAT
LOADER: _MEIPASS2 is NULL
LOADER: archivename is C:DSLRv4sourcedistSUATSUAT.exe
LOADER: No need to extract files to run; setting extractionpath to homepath
LOADER: Already in the child - running user's code.
LOADER: manifestpath: C:DSLRv4sourcedistSUATSUAT.exe.manifest
LOADER: Activation context created
LOADER: Activation context activated
LOADER: Python library: C:DSLRv4sourcedistSUATpython27.dll
LOADER: Manipulating evironment
LOADER: PYTHONPATH=C:DSLRv4sourcedistSUAT
LOADER: PYTHONHOME=C:DSLRv4sourcedistSUAT
LOADER: Manipulating Python's sys.path
LOADER: importing modules from CArchive
LOADER: extracted struct
LOADER: extracted pyi_os_path
LOADER: extracted pyi_archive
LOADER: extracted pyi_importers
LOADER: Installing import hooks
LOADER: out00-PYZ.pyz
LOADER: Running scripts
Filename is C:DSLRv4sourcedistSUATenamlcoreparser.pyc
Sourcefile is C:DSLRv4sourcedistSUATenamlcoreparser.py
ERROR:
Traceback (most recent call last):
  File "<string>", line 43, in <module>
  File "C:DSLRv4sourcebuildSUATout00-PYZ.pyzenaml", line 61, in imports
  File "c:usersolli~1.manappdatalocaltemppip-build-9rafnlpyinstallerPyInstallerloaderpyi_importers.py", line 2
70, in load_module
  File "C:DSLRv4sourcebuildSUATout00-PYZ.pyzenaml.core.import_hooks", line 18, in <module>
  File "c:usersolli~1.manappdatalocaltemppip-build-9rafnlpyinstallerPyInstallerloaderpyi_importers.py", line 2
70, in load_module
  File "C:DSLRv4sourcebuildSUATout00-PYZ.pyzenaml.core.parser", line 3931, in <module>
  File "C:DSLRv4sourcebuildSUATout00-PYZ.pyzply.yacc", line 3273, in yacc
  File "C:DSLRv4sourcebuildSUATout00-PYZ.pyzply.yacc", line 2931, in validate_all
  File "C:DSLRv4sourcebuildSUATout00-PYZ.pyzply.yacc", line 2975, in validate_modules
  File "C:DSLRv4sourcebuildSUATout00-PYZ.pyzinspect", line 692, in getsourcelines
  File "C:DSLRv4sourcebuildSUATout00-PYZ.pyzinspect", line 540, in findsource
IOError: could not get source code
LOADER: RC: -1 from suat
LOADER: OK.
LOADER: Deactivating activation context
LOADER: Releasing activation context
LOADER: Done
LOADER: Cleaning up Python interpreter.

文件名和源文件是我添加到检查器模块的打印语句,以弄清楚发生了什么。是的,这些源文件确实不在dist文件夹中。这里令人讨厌的是,据我所知,SUAT.py中绝对没有任何内容以任何方式处理源代码或更改操作系统目录。

我该如何处理这样的事情?这几天我一直在谷歌上搜索,直到眼睛流血。我不知道为什么要玩。Yacc将在编译后的文件夹中查找源文件,因为预计源文件一开始不会在那里。顺便说一句,我使用的是最新的PLY(3.6)和ENAML(0.9.8)。在绝望中,我得到了python(x y),基本上安装了所有东西,但它没有改变任何东西。我已经安装了mingw64,因为我之前遇到了"api版本已经设置为'1'"问题,并且需要功能SIP来更改运行时钩子中的api文件。

据我所知,这些路径都指向正确的位置,pythonpath也被设置成应该的样子。

C:Python27Scripts;C:Python27;C:Python27opencvbuildx86vc10bin;C:PYTHON27opencvbuildpython2.7;C:Windowssystem32;C:Windows;C:WindowsSystem32Wbem;C:WindowsSystem32WindowsPowerShellv1.0;C:Program Files (x86)Windows LiveShared;C:Program Files (x86)NVIDIA CorporationPhysXCommon;c:windowssystem32downlevel;C:mingw-w64i686-5.2.0-posix-dwarf-rt_v4-rev0mingw32bin

最后,我编辑了SPEC文件,从python site-packages中复制了相关的源文件。不太时髦,但它适用于单个文件夹构建。Enaml绝对不应该在独立构建中搜索py文件。我只是不确定仅仅挖掘的投资回报,为什么这些特定的库被寻找为。py文件,而其余的被检查为。pyd是值得的。

最新更新