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

Linux下PyInstaller打包可执行文件运行时出现InvalidVersion错误求助

问题:PyInstaller打包Holoviews脚本后运行报错packaging.version.InvalidVersion: Invalid version: 'None'

问题场景

使用包含pandas、holoviews等库的Python脚本处理CSV数据,执行pyinstaller grant.py生成可执行文件后,运行./grant时触发版本验证错误。

脚本内容

import datetime
import pandas as pd
import numpy as np
# import xarray as xr


import holoviews as hv
import colorcet as cc

df = pd.read_csv('./grant.csv')
print(df.head())
df_2012 = df.loc[df['year']==2012, :].copy()

hv.Points(
    data=df_2012,
    kdims=['beak length (mm)', 'beak depth (mm)'],
    vdims=['species'],
)

报错信息

Traceback (most recent call last):
  File "grant.py", line 7, in <module>
  File "<frozen importlib._bootstrap>", line 971, in _find_and_load
  File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 665, in _load_unlocked
  File "PyInstaller/loader/pyimod03_importers.py", line 495, in exec_module
  File "holoviews/__init__.py", line 11, in <module>
  File "<frozen importlib._bootstrap>", line 971, in _find_and_load
  File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 665, in _load_unlocked
  File "PyInstaller/loader/pyimod03_importers.py", line 495, in exec_module
  File "holoviews/util/__init__.py", line 15, in <module>
  File "<frozen importlib._bootstrap>", line 971, in _find_and_load
  File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 665, in _load_unlocked
  File "PyInstaller/loader/pyimod03_importers.py", line 495, in exec_module
  File "holoviews/core/__init__.py", line 3, in <module>
  File "<frozen importlib._bootstrap>", line 971, in _find_and_load
  File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 665, in _load_unlocked
  File "PyInstaller/loader/pyimod03_importers.py", line 495, in exec_module
  File "holoviews/core/boundingregion.py", line 12, in <module>
  File "<frozen importlib._bootstrap>", line 971, in _find_and_load
  File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 665, in _load_unlocked
  File "PyInstaller/loader/pyimod03_importers.py", line 495, in exec_module
  File "holoviews/core/util.py", line 53, in <module>
  File "packaging/version.py", line 266, in __init__
packaging.version.InvalidVersion: Invalid version: 'None'
[1396395] Failed to execute script 'grant' due to unhandled exception!

解决方案

该错误源于PyInstaller打包时,Holoviews依赖的某个库版本号被解析为None,导致packaging.version验证失败。可通过以下方式解决:

  • 方法1:锁定兼容版本
    安装与PyInstaller兼容的Holoviews及packaging版本,重新打包:

    pip install holoviews==1.14.9 packaging==21.3
    pyinstaller grant.py
    
  • 方法2:显式指定隐藏依赖
    打包时添加--hidden-import参数,补充缺失的版本相关依赖:

    pyinstaller --hidden-import=packaging.version --hidden-import=holoviews.core.util grant.py
    
  • 方法3:修改Holoviews版本检测逻辑(临时方案)
    找到holoviews/core/util.py中版本检测的代码,添加对None值的兼容处理:

    # 原代码可能类似
    # from packaging.version import Version
    # version = Version(some_version_string)
    
    # 修改为
    from packaging.version import parse
    some_version_string = some_version_string or "0.0.0"
    version = parse(some_version_string)
    

    修改后重新打包。

  • 方法4:使用PyInstaller钩子扩展库
    安装包含第三方库打包钩子的扩展库,自动处理依赖问题:

    pip install pyinstaller-hooks-contrib
    pyinstaller grant.py
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 04:17:07