【发布时间】:2019-10-28 10:31:00
【问题描述】:
我制作了一个简单的单文件脚本,希望与最终用户共享。我发现 Pyinstaller 完成了这项工作,所以我重构了我的项目结构。
我有一个项目目录。在里面,我有一个包有一个空的__init__.py 和一个__main__.py 与实际的脚本,其中包含一些库,如opencv-python、numpy 等。在项目之外,我有一个 setup.py 和从__main__.py 导入主函数并调用它的入口点脚本。
然后我在 --onefile 模式下使用 PyInstaller 针对这个入口点创建了可执行文件。当我在我的机器上使用创建的可执行文件时,它可以完美地完成这项工作,但是当我将它发送给最终用户时,它最终会出现错误(见下文)。我不太确定这个错误是什么意思,但我看到了通往我的开发环境的路径,而这些路径在其他机器上不应该存在。看起来它缺少依赖项,但我认为 PyInstaller 将这些依赖项捆绑到可执行文件中。
我在这里缺少什么?我在 StackOverflow 中阅读了很多关于这里的问题,但我找不到解决方案。
我在最新的 macOS 上使用 PyCharm 在 PyCharm 创建的 venv 中开发了这个脚本。 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
【问题讨论】:
-
最终用户是否与您使用相同的操作系统?
-
您找到解决方案了吗?
标签: python pyinstaller