gpt4 book ai didi

python - PyInstaller 打包 Flask 应用程序无法加载 Python 库,dlopen -> 找不到图像

转载 作者:太空宇宙 更新时间:2023-11-03 16:28:20 25 4
gpt4 key购买 nike

我已经打包了一个this simple flask app使用 PyInstaller 但我的 OSX 可执行文件无法运行并显示以下可执行文件,

Error loading Python lib '/Users/ahmed/Code/play/py-install-tut/dist/myscript.app/Contents/MacOS/Python': dlopen(/Users/ahmed/Code/play/py-install-tut/dist/myscript.app/Contents/MacOS/Python, 10): image not found

我的猜测是 PyInstaller 没有将 Python 与我的应用程序一起打包。这是我跑的,

$ pyinstaller hello_flask.spec --onedir
83 INFO: PyInstaller: 3.2
83 INFO: Python: 3.4.3
87 INFO: Platform: Darwin-13.4.0-x86_64-i386-64bit
89 INFO: UPX is not available.
90 INFO: Extending PYTHONPATH with paths
['/Users/ahmed/Code/play/py-install-tut',
'/Users/ahmed/Code/play/py-install-tut']
90 INFO: checking Analysis
99 INFO: checking PYZ
104 INFO: checking PKG
105 INFO: Building because toc changed
105 INFO: Building PKG (CArchive) out00-PKG.pkg
144 INFO: Bootloader /opt/boxen/pyenv/versions/3.4.3/Python.framework/Versions/3.4/lib/python3.4/site-packages/PyInstaller/bootloader/Darwin-64bit/run_d
144 INFO: checking EXE
145 INFO: Building because toc changed
145 INFO: Building EXE from out00-EXE.toc
145 INFO: Appending archive to EXE /Users/ahmed/Code/play/py-install-tut/build/hello_flask/hello_flask
155 INFO: Fixing EXE for code signing /Users/ahmed/Code/play/py-install-tut/build/hello_flask/hello_flask
164 INFO: checking COLLECT
WARNING: The output directory "/Users/ahmed/Code/play/py-install-tut/dist/hello_flask" and ALL ITS CONTENTS will be REMOVED! Continue? (y/n)y
1591 INFO: Removing dir /Users/ahmed/Code/play/py-install-tut/dist/hello_flask
1597 INFO: Building COLLECT out00-COLLECT.toc
2203 INFO: checking BUNDLE
WARNING: The output directory "/Users/ahmed/Code/play/py-install-tut/dist/myscript.app" and ALL ITS CONTENTS will be REMOVED! Continue? (y/n)y
3947 INFO: Removing dir /Users/ahmed/Code/play/py-install-tut/dist/myscript.app
3948 INFO: Building BUNDLE out00-BUNDLE.toc
3972 INFO: moving BUNDLE data files to Resource directory

当我在 OSX 中打开打包应用程序的内容时,我得到以下文件,

myscript.app/Contents/MacOS/
_struct.cpython-34m.so
hello_flask
zlib.cpython-34m.so

当我双击上面的 hello_flask 可执行文件时,我在终端中得到以下输出,

/Users/ahmed/Code/play/py-install-tut/dist/myscript.app/Contents/MacOS/hello_flask ; exit;                        
PyInstaller Bootloader 3.x
LOADER: executable is /Users/ahmed/Code/play/py-install-tut/dist/myscript.app/Contents/MacOS/hello_flask
LOADER: homepath is /Users/ahmed/Code/play/py-install-tut/dist/myscript.app/Contents/MacOS
LOADER: _MEIPASS2 is NULL
LOADER: archivename is /Users/ahmed/Code/play/py-install-tut/dist/myscript.app/Contents/MacOS/hello_flask
LOADER: Extracting binaries
LOADER: Executing self as child
LOADER: set _MEIPASS2 to /Users/ahmed/Code/play/py-install-tut/dist/myscript.app/Contents/MacOS
PyInstaller Bootloader 3.x
LOADER: executable is /Users/ahmed/Code/play/py-install-tut/dist/myscript.app/Contents/MacOS/hello_flask
LOADER: homepath is /Users/ahmed/Code/play/py-install-tut/dist/myscript.app/Contents/MacOS
LOADER: _MEIPASS2 is /Users/ahmed/Code/play/py-install-tut/dist/myscript.app/Contents/MacOS
LOADER: archivename is /Users/ahmed/Code/play/py-install-tut/dist/myscript.app/Contents/MacOS/hello_flask
LOADER: Already in the child - running user's code.
LOADER: Python library: /Users/ahmed/Code/play/py-install-tut/dist/myscript.app/Contents/MacOS/Python
Error loading Python lib '/Users/ahmed/Code/play/py-install-tut/dist/myscript.app/Contents/MacOS/Python': dlopen(/Users/ahmed/Code/play/py-install-tut/dist/myscript.app/Contents/MacOS/Python, 10): image not found
LOADER: Back to parent (RC: 255)
LOADER: Doing cleanup
LOADER: Freeing archive status for /Users/ahmed/Code/play/py-install-tut/dist/myscript.app/Contents/MacOS/hello_flask

[Process completed]

我也尝试在同事的 mac OSX 上运行此程序,但遇到了同样的问题。

最佳答案

我确实意识到这是一篇旧帖子,但刚刚遇到了同样的问题,并找到了一个可能的解决方案 - 以防万一其他人发现它有用。也许这并不理想,我确信某些地方一定缺少一些东西,但无论如何......

pyinstaller 在 dist 目录中创建一个 myscript 目录和一个 myscript.app 文件。我设法通过手动将 dist/myscript 中的所有内容复制到 myscript.app/Contents/MacOS 中来运行应用程序

之后myscript.app文件成功为我启动了程序,并且也可以在没有myscript目录的情况下进行分发。

不知道为什么 pyinstaller 不会自动复制所有内容。

关于python - PyInstaller 打包 Flask 应用程序无法加载 Python 库,dlopen -> 找不到图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37817559/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com