You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu18.04下Python3.10缺失libpython3.10.so致PyInstaller运行失败求助

问题:Ubuntu 18.04源码编译Python3.10.5后PyInstaller打包失败,缺少libpython3.10m.so
  • 我在Ubuntu 18.04系统中从源码编译安装了Python 3.10.5,使用PyInstaller打包时报错;但系统自带的Python 3.6搭配PyInstaller时能正常找到/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0并运行。
  • 当前机器里只有libpython3.10.a文件,没有libpython3.10m.so,怀疑这是报错原因,想确认:
    1. 是否获取到libpython3.10m.so就能解决问题?
    2. 如何获取或编译生成这个文件?

报错信息

INFO: Python library not in binary dependencies. Doing additional searching...
Traceback (most recent call last):
  File "/usr/local/lib/python3.10/runpy.py", line 196, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "/usr/local/lib/python3.10/runpy.py", line 86, in _run_code
    exec(code, run_globals)
  File "/home/jenkins/.local/lib/python3.10/site-packages/PyInstaller/__main__.py", line 134, in <module>
    run()
  File "/home/jenkins/.local/lib/python3.10/site-packages/PyInstaller/__main__.py", line 124, in run
    run_build(pyi_config, spec_file, **vars(args))
  File "/home/jenkins/.local/lib/python3.10/site-packages/PyInstaller/__main__.py", line 58, in run_build
    PyInstaller.building.build_main.main(pyi_config, spec_file, **kwargs)
  File "/home/jenkins/.local/lib/python3.10/site-packages/PyInstaller/building/build_main.py", line 782, in main
    build(specfile, kw.get('distpath'), kw.get('workpath'), kw.get('clean_build'))
  File "/home/jenkins/.local/lib/python3.10/site-packages/PyInstaller/building/build_main.py", line 714, in build
    exec(code, spec_namespace)
  File "/home/jenkins/workspace/TOOLS/tools-helper-build-python3-linux/hosttools/python/maxwell_dm.spec", line 7, in <module>
    a = Analysis(['maxwell_dm_gui/app_entry.py'],
  File "/home/jenkins/.local/lib/python3.10/site-packages/PyInstaller/building/build_main.py", line 277, in __init__
    self.__postinit__()
  File "/home/jenkins/.local/lib/python3.10/site-packages/PyInstaller/building/datastruct.py", line 155, in __postinit__
    self.assemble()
  File "/home/jenkins/.local/lib/python3.10/site-packages/PyInstaller/building/build_main.py", line 501, in assemble
    self._check_python_library(self.binaries)
  File "/home/jenkins/.local/lib/python3.10/site-packages/PyInstaller/building/build_main.py", line 605, in _check_python_library
    python_lib = bindepend.get_python_library_path()
  File "/home/jenkins/.local/lib/python3.10/site-packages/PyInstaller/depend/bindepend.py", line 897, in get_python_library_path
    python_libname = findLibrary(name)
  File "/home/jenkins/.local/lib/python3.10/site-packages/PyInstaller/depend/bindepend.py", line 775, in findLibrary
    lib = _which_library(name, paths)
  File "/home/jenkins/.local/lib/python3.10/site-packages/PyInstaller/depend/bindepend.py", line 806, in _which_library
    for _path in os.listdir(path):
FileNotFoundError: [Errno 2] No such file or directory: '/usr/lib64'

解答

1. 是否获取libpython3.10m.so就能解决问题?

是的。PyInstaller打包依赖Python的动态链接库(.so文件),静态库(.a文件)无法满足其动态链接需求。当前报错提示找不到/usr/lib64,本质是PyInstaller找不到Python 3.10的动态库,才会去搜索不存在的路径。生成libpython3.10m.so后,PyInstaller能正确识别到动态库,即可解决核心问题。

2. 如何编译生成libpython3.10m.so?

从源码编译Python时,默认可能未生成动态库,需要通过配置参数开启:

步骤1:清理原有编译产物

进入Python 3.10.5源码目录,清理之前的编译文件:

cd Python-3.10.5
make clean

步骤2:配置编译参数

执行configure命令时,添加强制生成动态库的参数:

./configure --enable-shared --enable-optimizations
  • --enable-shared:强制生成动态链接库libpython3.10m.so
  • --enable-optimizations:开启编译优化(可选,推荐添加提升性能)

步骤3:编译并安装

make -j$(nproc)
sudo make install

步骤4:更新动态库缓存

让系统识别新安装的动态库:

sudo ldconfig

验证生成结果

执行以下命令确认libpython3.10m.so是否存在:

ls /usr/local/lib/libpython3.10m.so

额外处理:解决/usr/lib64路径问题

如果生成动态库后仍提示找不到/usr/lib64,可手动创建软链接(Ubuntu 18.04默认使用/usr/lib/x86_64-linux-gnu而非/usr/lib64):

sudo ln -s /usr/lib/x86_64-linux-gnu /usr/lib64

内容的提问来源于stack exchange,提问作者quite68

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 09:45:47