如何修复pyinstaller在从scrip创建exe文件时找不到matlab文件的问题

2024-04-19 14:22:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图从我的python脚本中生成一个EXE,以便在没有安装python的机器上使用GUI。目前,我的文件可以很好地调用matlab脚本并发送JSON对象。我的问题是当我试图从python脚本生成一个EXE文件时。我得到了一系列的错误,使我相信pyinstaller是有困难找到正确的文件与matlab接口。你知道吗

我曾尝试将路径添加到matlab引擎文件夹中,并将其他matlab文件夹添加到.spec文件中的pathex变量中,但没有效果。你知道吗

我的警告文件:

missing module named resource - imported by posix (top-level), C:\Users\taylorr\PythonScripts\EAST_GUI.py (top-level)
missing module named posix - imported by os (conditional, optional), C:\Users\taylorr\PythonScripts\EAST_GUI.py (top-level)
missing module named _posixsubprocess - imported by subprocess (conditional), C:\Users\taylorr\PythonScripts\EAST_GUI.py (top-level)
missing module named org - imported by pickle (optional), C:\Users\taylorr\PythonScripts\EAST_GUI.py (top-level)
missing module named readline - imported by cmd (delayed, conditional, optional), code (delayed, conditional, optional), pdb (delayed, optional), C:\Users\taylorr\PythonScripts\EAST_GUI.py (top-level)
excluded module named _frozen_importlib - imported by importlib (optional), importlib.abc (optional), C:\Users\taylorr\PythonScripts\EAST_GUI.py (top-level)
missing module named _frozen_importlib_external - imported by importlib._bootstrap (delayed), importlib (optional), importlib.abc (optional), C:\Users\taylorr\PythonScripts\EAST_GUI.py (top-level)
missing module named _winreg - imported by platform (delayed, optional), C:\Users\taylorr\PythonScripts\EAST_GUI.py (top-level)
missing module named _scproxy - imported by urllib.request (conditional)
missing module named java - imported by platform (delayed), C:\Users\taylorr\PythonScripts\EAST_GUI.py (top-level)
missing module named 'java.lang' - imported by platform (delayed, optional), C:\Users\taylorr\PythonScripts\EAST_GUI.py (top-level), xml.sax._exceptions (conditional)
missing module named vms_lib - imported by platform (delayed, conditional, optional), C:\Users\taylorr\PythonScripts\EAST_GUI.py (top-level)
missing module named termios - imported by tty (top-level), C:\Users\taylorr\PythonScripts\EAST_GUI.py (top-level), getpass (optional)
missing module named grp - imported by shutil (optional), tarfile (optional), C:\Users\taylorr\PythonScripts\EAST_GUI.py (top-level)
missing module named 'org.python' - imported by copy (optional), C:\Users\taylorr\PythonScripts\EAST_GUI.py (top-level), xml.sax (delayed, conditional)
missing module named pwd - imported by posixpath (delayed, conditional), shutil (optional), tarfile (optional), http.server (delayed, optional), webbrowser (delayed), C:\Users\taylorr\PythonScripts\EAST_GUI.py (top-level), netrc (delayed, conditional), getpass (delayed)
missing module named _dummy_threading - imported by dummy_threading (optional), C:\Users\taylorr\PythonScripts\EAST_GUI.py (top-level)
missing module named StringIO - imported by matlab.engine.matlabengine (optional)
missing module named matlab.engine.MatlabExecutionError - imported by matlab.engine (top-level), matlab.engine.matlabengine (top-level)
missing module named matlab.engine.CancelledError - imported by matlab.engine (top-level), matlab.engine.matlabfuture (top-level)
missing module named matlab.engine.TimeoutError - imported by matlab.engine (top-level), matlab.engine.matlabfuture (top-level), matlab.engine.fevalfuture (top-level)

我在命令提示符下的debug输出:

import 'mlexceptions' # <_frozen_importlib_external.SourcelessFileLoader object
at 0x0000000002C5BF60>
import 'matlab' # <_frozen_importlib_external.SourcelessFileLoader object at 0x0
000000002C09908>
# matlab.engine not found in PYZ
# code object from 'C:\\Users\\taylorr\\AppData\\Local\\Temp\\_MEI97562\\matlab\
\engine\\__init__.pyc'
import 'atexit' # <class '_frozen_importlib.BuiltinImporter'>
# threading not found in PYZ
# code object from 'C:\\Users\\taylorr\\AppData\\Local\\Temp\\_MEI97562\\threadi
ng.pyc'
import 'time' # <class '_frozen_importlib.BuiltinImporter'>
# traceback not found in PYZ
# linecache not found in PYZ
# tokenize not found in PYZ
# code object from 'C:\\Users\\taylorr\\AppData\\Local\\Temp\\_MEI97562\\tokeniz
e.pyc'
# token not found in PYZ
# code object from 'C:\\Users\\taylorr\\AppData\\Local\\Temp\\_MEI97562\\token.p
yc'
import 'token' # <_frozen_importlib_external.SourcelessFileLoader object at 0x00
00000002C8E208>
import 'tokenize' # <_frozen_importlib_external.SourcelessFileLoader object at 0
x0000000002C80AC8>
import linecache # loaded from Zip C:\Users\taylorr\AppData\Local\Temp\_MEI97562
\base_library.zip\linecache.pyc
import traceback # loaded from Zip C:\Users\taylorr\AppData\Local\Temp\_MEI97562
\base_library.zip\traceback.pyc
import 'threading' # <_frozen_importlib_external.SourcelessFileLoader object at
0x0000000002C63908>
# matlabengineforpython3_6 not found in PYZ
Traceback (most recent call last):
  File "c:\python\lib\site-packages\matlab\engine\__init__.py", line 43, in <mod
ule>
    pythonengine = importlib.import_module("matlabengineforpython"+_PYTHONVERSIO
N)
  File "c:\python\lib\importlib\__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 994, in _gcd_import
  File "<frozen importlib._bootstrap>", line 971, in _find_and_load
  File "<frozen importlib._bootstrap>", line 953, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'matlabengineforpython3_6'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "c:\python\lib\site-packages\matlab\engine\__init__.py", line 46, in <mod
ule>
    _arch_file = open(_arch_filename,'r')
FileNotFoundError: [Errno 2] No such file or directory: 'C:\\Users\\taylorr\\App
Data\\Local\\Temp\\_MEI97562\\matlab\\engine\\_arch.txt'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "EAST_GUI.py", line 10, in <module>
  File "<frozen importlib._bootstrap>", line 971, in _find_and_load
  File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 665, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 678, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "c:\python\lib\site-packages\matlab\engine\__init__.py", line 62, in <mod
ule>
    'MathWorks Technical Support for assistance: %s' % e)
OSError: Please reinstall MATLAB Engine for Python or contact MathWorks Technica
l Support for assistance: [Errno 2] No such file or directory: 'C:\\Users\\taylo
rr\\AppData\\Local\\Temp\\_MEI97562\\matlab\\engine\\_arch.txt'
[5724] Failed to execute script EAST_GUI
[5724] LOADER: OK.
[5724] LOADER: Cleaning up Python interpreter.

我本以为这会告诉我问题出在哪里,但我只能看到它告诉我需要重新安装pythonapi for matlab,它似乎什么也做不了。你知道吗


Tags: inpybytopguiimportliblevelusers