![](/img/trans.png)
[英]What does “Error loading Python lib” … “image not found error” mean when attempting to run Mac app created using pyinstaller?
[英]Python app created via Pyinstaller does not run
我制作了一個簡單的單文件腳本,希望與最終用戶共享。 我發現 Pyinstaller 完成了這項工作,所以我重構了我的項目結構。
我有一個項目目錄。 在里面,我有一個 package,它有一個空的__init__.py
和一個__main__.py
實際腳本,其中包含一些庫,如 opencv-python、numpy 等。在項目之外,我有一個 setup.py 和從__main__.py
導入主 function 並調用它的入口點腳本。
然后我在 --onefile 模式下使用 PyInstaller 針對這個入口點創建了可執行文件。 當我在我的機器上使用創建的可執行文件時,它可以完美地完成工作,但是當我將它發送給最終用戶時,它最終會出現錯誤(見下文)。 我不太確定這個錯誤是什么意思,但我看到了通往我的開發環境的路徑,這些路徑在其他機器上不應該存在。 看起來它缺少依賴項,但我認為 PyInstaller 將這些依賴項捆綁到可執行文件中。
我在這里想念什么? 我在 StackOverflow 中閱讀了很多關於這里的問題,但我找不到解決方案。
我在 PyCharm 創建的 venv 中使用 PyCharm 在最新的 macOS 上開發了這個腳本。 venv 文件夾位於項目目錄中 - 我不知道這可能是一個問題。
Traceback (most recent call last):
File "PyInstaller/loader/rthooks/pyi_rth_pkgres.py", line 11, in <module>
File "/Users/hordon/Documents/DEV/projects/scan_detect/venv/lib/python3.7/site-packages/PyInstaller/loader/pyimod03_importers.py", line 627, in exec_module
File "setuptools-40.8.0-py3.7.egg/pkg_resources/__init__.py", line 33, in <module>
File "/Users/hordon/Documents/DEV/projects/scan_detect/venv/lib/python3.7/site-packages/PyInstaller/loader/pyimod03_importers.py", line 627, in exec_module
File "platform.py", line 116, in <module>
File "/Users/hordon/Documents/DEV/projects/scan_detect/venv/lib/python3.7/site-packages/PyInstaller/loader/pyimod03_importers.py", line 627, in exec_module
File "subprocess.py", line 153, in <module>
ImportError: dlopen(/var/folders/wk/cwx1b16j50z5_yt1ynq82hr00000gn/T/_MEI7eUUkV/select.cpython-37m-darwin.so, 2): Symbol not found: ____chkstk_darwin
Referenced from: /var/folders/wk/cwx1b16j50z5_yt1ynq82hr00000gn/T/_MEI7eUUkV/select.cpython-37m-darwin.so (which was built for Mac OS X 10.15)
Expected in: /usr/lib/libSystem.B.dylib
in /var/folders/wk/cwx1b16j50z5_yt1ynq82hr00000gn/T/_MEI7eUUkV/select.cpython-37m-darwin.so
[15314] Failed to execute script pyi_rth_pkgres
我也有同樣的問題,可惜是mac os的問題。 所以,如果你想支持不同版本的 mac os,你需要在最舊版本的 mac os 上構建你的應用程序。
“在 Mac OS X 中,一個 OS 版本的組件通常與更高版本兼容,但它們可能不適用於早期版本。
確定您的應用程序支持舊版 Mac OS X 的唯一方法是在您需要支持的舊版操作系統中運行 PyInstaller。”
https://pyinstaller.readthedocs.io/en/stable/usage.html#making-mac-os-x-apps-forward-compatible
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.