【发布时间】:2021-06-14 01:07:15
【问题描述】:
我正在尝试在我的 MAC OS Catalina 上使用 PyInstaller 编译我的 Python 3.9 脚本: MAC OS 卡塔利娜 10.15.6 蟒蛇 3.9 Pyinstaller 4.2
当我从 Mac 上的终端运行我的 python 脚本时,它运行良好,没有任何问题。
我用这个命令编译:
sudo python3 -m PyInstaller --uac-admin --windowed --icon=MyScript_icon.icns MyScript.spec
这里是 MyScript.spec:
# -*- mode: python ; coding: utf-8 -*-
block_cipher = None
a = Analysis(['MyScript.py'],
pathex=['/Users/alisa/Dropbox/cff/Python/MyScriptFolder'],
binaries=[],
datas=[( 'necessary_files/create_db.sql', '.'),
( 'necessary_files/fra.traineddata', '.'),
( 'ui.json', '.'),
( 'MyScript_Install.sh', '.'),
( 'necessary_files/assets', '.'),
( 'necessary_files/selenium', '.'),
( 'Start_MyScript.sh', '.'),
( 'ui', 'ui' )],
hiddenimports=[],
hookspath=[],
runtime_hooks=[],
excludes=['FixTk', 'tcl', 'tk', '_tkinter', 'tkinter', 'Tkinter'],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False)
pyz = PYZ(a.pure, a.zipped_data,
cipher=block_cipher)
exe = EXE(pyz,
a.scripts,
[],
exclude_binaries=True,
name='MyScript',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
console=False , uac_admin=True, icon='myscript_icon.icns')
coll = COLLECT(exe,
a.binaries,
a.zipfiles,
a.datas,
strip=False,
upx=True,
upx_exclude=[],
name='MyScript')
app = BUNDLE(coll,
name='MyScript.app',
icon='MyScript_icon.icns',
bundle_identifier=None)
当我双击应用程序时,它不会启动应用程序。所以我通过命令行打开它:
open dist/MyScript.app/Contents/MacOS/MyScript
一个终端窗口正在显示,几秒钟后出现此错误消息:
Traceback (most recent call last):
File "MyScript.py", line 20, in <module>
File "PyInstaller/loader/pyimod03_importers.py", line 531, in exec_module
File "prepare_envir_appium.py", line 20, in <module>
File "PyInstaller/loader/pyimod03_importers.py", line 531, in exec_module
File "mymodules.py", line 46, in <module>
File "PyInstaller/loader/pyimod03_importers.py", line 531, in exec_module
File "pytesseract/__init__.py", line 2, in <module>
File "PyInstaller/loader/pyimod03_importers.py", line 531, in exec_module
File "pytesseract/pytesseract.py", line 40, in <module>
File "PyInstaller/loader/pyimod03_importers.py", line 531, in exec_module
File "pandas/__init__.py", line 179, in <module>
File "PyInstaller/loader/pyimod03_importers.py", line 531, in exec_module
File "pandas/testing.py", line 5, in <module>
File "PyInstaller/loader/pyimod03_importers.py", line 531, in exec_module
File "pandas/_testing.py", line 29, in <module>
File "pandas/_libs/testing.pyx", line 1, in init pandas._libs.testing
ModuleNotFoundError: No module named 'cmath'
[21640] Failed to execute script MyScript
所以我搜索安装 cmath 但我不能。 所以我将它添加为spec文件中的隐藏导入,但它不起作用。
mymodules.py 中的第 46 行是 Tesseract Python 模块的导入:
import pytesseract
所以我尝试用这个最少的代码重现这个问题:
import pytesseract
print("Hello")
我得到完全相同的问题!!!那么PyInstaller编译pytesseract有问题吗?
【问题讨论】: