Python pyinstaller生成oct2py导入的可执行文件错误

Python pyinstaller生成oct2py导入的可执行文件错误,python,pyinstaller,oct2py,Python,Pyinstaller,Oct2py,我正在尝试制作一个python可执行文件,它使用oct2py来评估一个.m文件。python脚本可以独立工作。我已经成功地使用pyinstaller生成了一个可执行文件(使用--onefile,构建过程中没有错误),但是当我运行这个可执行文件时,出现以下错误,可执行文件退出: C:\Users\Jason\Desktop\Oct2Py test>readFolder.exe error: '_pyeval' undefined near line 1 column 1 Traceback

我正在尝试制作一个python可执行文件,它使用oct2py来评估一个.m文件。python脚本可以独立工作。我已经成功地使用pyinstaller生成了一个可执行文件(使用--onefile,构建过程中没有错误),但是当我运行这个可执行文件时,出现以下错误,可执行文件退出:

C:\Users\Jason\Desktop\Oct2Py test>readFolder.exe
error: '_pyeval' undefined near line 1 column 1
Traceback (most recent call last):
  File "site-packages\scipy\io\matlab\mio.py", line 33, in _open_file
FileNotFoundError: [Errno 2] No such file or directory: 'C:/Users/Jason/AppData/Local/Temp/tmpbn8aefsj/reader.mat'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "readFolder.py", line 8, in <module>
    octave.eval('pkg load io')
  File "site-packages\oct2py\core.py", line 484, in eval
  File "site-packages\oct2py\core.py", line 369, in feval
  File "site-packages\oct2py\core.py", line 565, in _feval
  File "site-packages\oct2py\io.py", line 28, in read_file
  File "site-packages\scipy\io\matlab\mio.py", line 141, in loadmat
  File "site-packages\scipy\io\matlab\mio.py", line 64, in mat_reader_factory
  File "site-packages\scipy\io\matlab\mio.py", line 39, in _open_file
FileNotFoundError: [Errno 2] No such file or directory: 'C:/Users/Jason/AppData/Local/Temp/tmpbn8aefsj/reader.mat'
[1456] Failed to execute script readFolder
C:\Users\Jason\Desktop\Oct2Py test>readFolder.exe
错误:“_pyeval”在第1行第1列附近未定义
回溯(最近一次呼叫最后一次):
文件“site packages\scipy\io\matlab\mio.py”,第33行,在打开文件中
FileNotFoundError:[Errno 2]没有这样的文件或目录:“C:/Users/Jason/AppData/Local/Temp/tmpbn8aefsj/reader.mat”
在处理上述异常期间,发生了另一个异常:
回溯(最近一次呼叫最后一次):
文件“readFolder.py”,第8行,在
倍频程评估('pkg load io')
文件“site packages\oct2py\core.py”,第484行,在eval中
文件“site packages\oct2py\core.py”,第369行,在feval中
文件“site packages\oct2py\core.py”,第565行,在
文件“site packages\oct2py\io.py”,第28行,在read\u文件中
loadmat中第141行的文件“site packages\scipy\io\matlab\mio.py”
文件“site packages\scipy\io\matlab\mio.py”,第64行,在mat_reader_工厂中
文件“site packages\scipy\io\matlab\mio.py”,第39行,在打开文件中
FileNotFoundError:[Errno 2]没有这样的文件或目录:“C:/Users/Jason/AppData/Local/Temp/tmpbn8aefsj/reader.mat”
[1456]无法执行脚本读取文件夹
看起来问题首先出现在'mio.py'上,但我不知道它在哪里寻找'reader.mat'。我认为'reader.mat'是由oct2py创建的某种临时文件

只是为了确保python脚本正确运行并正确计算整个oct2py引用的.m文件

谢谢


python 3.7,pyinstaller 3.5开发版,oct2py 4.0.6。

也有同样的问题,从这里得到了答案:

解决方案似乎是将一个临时文件夹作为参数传递给oct2py

导入oct2py
os.makedirs(临时文件夹,exist\u ok=True)
倍频程=oct2py.oct2py(temp\u dir=temp\u文件夹)

也有同样的问题,从这里得到了答案:

解决方案似乎是将一个临时文件夹作为参数传递给oct2py

导入oct2py
os.makedirs(临时文件夹,exist\u ok=True)
倍频程=oct2py.oct2py(temp\u dir=temp\u文件夹)

看起来SciPy找不到该文件-您是否尝试过使用该文件以查看是否可以明确声明它是必需的?否则就要进行故障排除了!是的,阿里。特别是mio.py调用_open_文件失败。现在,也很清楚reader.mat是一个临时文件,它一定是在执行时创建的-所以我想我遗漏了其他一些东西,但我不知道是什么。一旦我知道需要链接什么,我就可以尝试按照您的建议修改spec文件。如果程序在运行时创建临时文件,请不要使用“--onefile”标志。谢谢Hiadore,但恐怕不行:谢谢@Hiadore,但恐怕这不起作用:'C:\Users\Jason\Desktop\Oct2Py test>dist\readFolder\readFolder.exe错误:'u pyeval'在第1行第1列附近未定义。。。。FileNotFoundError:[Errno 2]没有这样的文件或目录:“C:/Users/Jason/AppData/Local/Temp/tmpc17tnd51/reader.mat”在处理上述异常期间,发生了另一个异常:。。。。。。。文件“site packages\scipy\io\matlab\mio.py”,第37行,在文件FileNotFoundError:[Errno 2]中没有这样的文件或目录:“C:/Users/Jason/AppData/Local/Temp/tmpc17tnd51/reader.mat”[11220]无法执行脚本readFolder'看起来SciPy找不到该文件-您是否尝试过使用该文件以查看是否可以显式声明它是必需的?否则就要进行故障排除了!是的,阿里。特别是mio.py调用_open_文件失败。现在,也很清楚reader.mat是一个临时文件,它一定是在执行时创建的-所以我想我遗漏了其他一些东西,但我不知道是什么。一旦我知道需要链接什么,我就可以尝试按照您的建议修改spec文件。如果程序在运行时创建临时文件,请不要使用“--onefile”标志。谢谢Hiadore,但恐怕不行:谢谢@Hiadore,但恐怕这不起作用:'C:\Users\Jason\Desktop\Oct2Py test>dist\readFolder\readFolder.exe错误:'u pyeval'在第1行第1列附近未定义。。。。FileNotFoundError:[Errno 2]没有这样的文件或目录:“C:/Users/Jason/AppData/Local/Temp/tmpc17tnd51/reader.mat”在处理上述异常期间,发生了另一个异常:。。。。。。。文件“site packages\scipy\io\matlab\mio.py”,第37行,在文件FileNotFoundError:[Errno 2]中没有这样的文件或目录:“C:/Users/Jason/AppData/Local/Temp/tmpc17tnd51/reader.mat”[11220]无法执行脚本readFolder”