pyinstaller 与 opencl 的使用

问题描述

使用 pyinstaller 和 opencl 将 python 脚本转换为二进制文件的正确方法是什么?如何设置 name.spec 文件?在下面查看我的 pyinstaller 设置

用法:pyinstaller --clean --noconfirm --log-level=DEBUG --onefile --paths=/home/testuser/projects/tool --paths=/usr/local/lib/python3.8/dist -packages/pyopencl-2018.2.2-py3.8-linux-x86_64.egg --hidden-import=pyopencl --name=toolexe tool.py

解决方法

从我的主脚本(myscript.py)中,我调用“import tool as *”,这是我的工具包,它在几个工具包脚本中调用“import pyopencl as cl”。当我在脚本上运行编译后的二进制版本时,我看到“pyopencl.init.py”被多次调用..(见下图) 我想知道是否是“工具作为 *”的相对导入,从而搞砸了二进制版本。注意:此代码确实可以用作 python 脚本代码。

#myscript -- "导入工具为 *" └── 工具
├── common.py ... #"import pyopencl as cl" ├── engine.py ... #"import pyopencl as cl" ├── traffic.py... #"import pyopencl as cl" ├── init.py

,

我在将 python 脚本转换为二进制文件时发现了两个问题

  1. python 脚本导入工具/tool.py 错误,导入脚本不能与所在目录同名。

  2. 在 linux 中,当转换为二进制时,线程会出现警告.. https://docs.python.org/3/library/multiprocessing.html

警告 'spawn' 和 'forkserver' 启动方法目前不能用于 Unix 上的“冻结”可执行文件(即由 PyInstaller 和 cx_Freeze 等包生成的二进制文件)。 'fork' 启动方法确实有效