Pyinstaller在windows上打开时无法执行脚本

2024-07-02 09:42:51 发布

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

在我的应用程序中,应该可以用我的程序打开文件。但是当我点击myfile时..mft>;Open with>;myexe\u to\u Open_mft.exe文件然后exe得到一个错误:致命错误,无法执行脚本。如果我在没有open with的情况下按常规打开程序,则不会出现错误;如果通过命令提示符打开程序,则也不会出现错误。 谢谢你的帮助!你知道吗

(编辑:最后我通过ctypes隐藏了控制台,修复了这个错误)

pyinstaller --windowed -i icon.ico PickleViewer.py

Image from the Script if run over command line

Screenshot of the error

pyinstaller的输出

162 INFO: PyInstaller: 3.5
162 INFO: Python: 3.7.4
163 INFO: Platform: Windows-10-10.0.18362-SP0
173 INFO: wrote 
C:\Users\user\Documents\Python\Documents\pickle_viewer\PickleViewer.spec
177 INFO: UPX is not available.
179 INFO: Extending PYTHONPATH with paths
['C:\\Users\\user\\Documents\\Python\\Documents\\pickle_viewer',
'C:\\Users\\user\\Documents\\Python\\Documents\\pickle_viewer']
180 INFO: checking Analysis
199 INFO: Building because 
C:\Users\user\Documents\Python\Documents\pickle_viewer\PickleViewer.py 
changed
200 INFO: Initializing module dependency graph...
206 INFO: Initializing module graph hooks...
211 INFO: Analyzing base_library.zip ...
5148 INFO: running Analysis Analysis-00.toc
5191 INFO: Adding Microsoft.Windows.Common-Controls to dependent 
assemblies of final executable
required by c:\users\user\appdata\local\programs\python\python37- 
32\python.exe
8448 INFO: Caching module hooks...
8463 INFO: Analyzing 
C:\Users\user\Documents\Python\Documents\pickle_viewer\PickleViewer.py
8789 INFO: Loading module hooks...
8789 INFO: Loading module hook "hook-encodings.py"...
8936 INFO: Loading module hook "hook-pydoc.py"...
8938 INFO: Loading module hook "hook-xml.py"...
9298 INFO: Loading module hook "hook-_tkinter.py"...
9871 INFO: checking Tree
9931 INFO: checking Tree
9984 INFO: Looking for ctypes DLLs
9985 INFO: Analyzing run-time hooks ...
9989 INFO: Including run-time hook 'pyi_rth__tkinter.py'
9996 INFO: Looking for dynamic libraries
17315 INFO: Looking for eggs
17316 INFO: Using Python library 
c:\users\user\appdata\local\programs\python\python37-32\python37.dll
17316 INFO: Found binding redirects:
[]
17331 INFO: Warnings written to 
C:\Users\user\Documents\Python\Documents\pickle_viewer\build\PickleViewer\
warn 
-PickleViewer.txt
17397 INFO: Graph cross-reference written to 
C:\Users\user\Documents\Python\Documents\pickle_viewer\build\PickleViewer\xre 
f-PickleViewer.html
17499 INFO: checking PYZ
17501 INFO: Building because toc changed
17502 INFO: Building PYZ (ZlibArchive) 
C:\Users\user\Documents\Python\Documents\pickle_viewer\build\PickleViewer\PYZ 
-00.pyz
18467 INFO: Building PYZ (ZlibArchive) 
C:\Users\user\Documents\Python\Documents\pickle_viewer\build\PickleViewer\
PYZ- 
00.pyz completed successfully.
18499 INFO: checking PKG
18501 INFO: Building because 
C:\Users\user\Documents\Python\Documents\pickle_viewer\build\PickleViewer\PYZ 
-00.pyz changed
18502 INFO: Building PKG (CArchive) PKG-00.pkg
18549 INFO: Building PKG (CArchive) PKG-00.pkg completed successfully.
18554 INFO: Bootloader c:\users\user\appdata\local\programs\python\python37- 
32\lib\site- 
packages\PyInstaller\bootloader\Windows-32bit\runw.exe
18554 INFO: checking EXE
18556 INFO: Building because console changed
18556 INFO: Building EXE from EXE-00.toc
18651 INFO: Copying icons from ['icon.ico']
18754 INFO: Writing RT_GROUP_ICON 0 resource with 20 bytes
18755 INFO: Writing RT_ICON 1 resource with 22767 bytes
19067 INFO: Appending archive to EXE 
C:\Users\user\Documents\Python\Documents\pickle_viewer\build\PickleViewer\
Pick 
leViewer.exe
19249 INFO: Building EXE from EXE-00.toc completed successfully.
19266 INFO: checking COLLECT
WARNING: The output directory 
"C:\Users\user\Documents\Python\Documents\pickle_viewer\dist\PickleViewer" 
and ALL ITS CONTENTS will be REMOVED! Continue? (y/N)y
21243 INFO: Removing dir 
C:\Users\user\Documents\Python\Documents\pickle_viewer\dist\PickleViewer
21736 INFO: Building COLLECT COLLECT-00.toc
33512 INFO: Building COLLECT COLLECT-00.toc completed successfully.

Tags: pybuildinfohookvieweruserspickledocuments
2条回答

我知道这个错误,“致命错误,执行脚本失败”

此错误是因为您将python脚本(.pyw not.py)编译为.exe格式,但该脚本中没有可用的GUI。因此,必须使用“py”扩展名(在Pyinstaller中,不要键入“-W”),或者使用PyGame、PyQT等

而且Tkinter与.pyw扩展不兼容,所以应该使用 PyGame或PyQt或其他大型GUI库

我想我找到了:

if getattr(sys, 'frozen', False): # we are running in a bundle frozen = 'ever so' bundle_dir = sys._MEIPASS else: # we are running in a normal Python environment bundle_dir = os.path.dirname(os.path.abspath(__file__))

编辑: 没有帮助

编辑(解决方案):

我通过ctypes隐藏了控制台。你知道吗

相关问题 更多 >