Nuitka 打包问题

Nuitka 虽然是一个比较好用的跨平台打包工具,但是有时打包也存在许多问题:

找不到动态链接库

基本可以通过--include-data-files="{src_dir/dll_file}=./" 手动拷贝动态链接库到二进制根目录解决。此问题常见于PyQt 打包

避免使用Conda 包

Conda 包安装方便,可以直接在Python 代码使用。但是在打包成二进制文件时容易遇到rpath 的问题,此问题在Nuitka>=2.6.8 以上版本容易出现
可以使用低版本Nuitka 外加--include-data-files="$CONDA_PREFIX/lib/{dll_file}.so*=./" 解决

使用预编译.whl 的问题

有些库为了跨平台使用了一些包,但是打包的时候会出问题,例如ImportError: libtiff-d0580107.so.5.7.0: ELF load command address/offset not properly aligned
这时需要从源码编译库文件,例如pip install --no-binary :all: Pillow

  • --no-binary 不使用预编译二进制包
  • :all: 应用于所有库

二进制文件的问题

尽量不要依赖虚拟环境,太痛苦了