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

为何`importlib.metadata.version`无法在ZIP文件上正常工作?

解决importlib.metadata无法识别ZIP中dist-info的问题

问题原因

你的打包方式和PYTHONPATH设置有误,导致importlib.metadata无法在ZIP文件的正确位置找到包的元数据目录(dist-info)。

当执行pip install -t foo jedi-language-server后,foo目录下直接包含包代码和对应的dist-info元数据目录。但你用zip -r foo.zip foo打包时,会把整个foo目录作为ZIP的根目录,导致元数据目录处于foo.zip/foo/路径下。而设置PYTHONPATH=foo.zip/foo后,importlib.metadata只会在sys.path指定的路径根目录下搜索dist-info,不会递归查找ZIP内部的子目录,因此报错。

修复步骤

调整打包方式和PYTHONPATH设置即可解决:

  1. 保持原安装步骤:
    pip install -t foo jedi-language-server
    
  2. 进入foo目录,将目录内的所有内容直接打包(而非打包整个foo目录):
    cd foo
    zip -r ../foo.zip *
    
  3. 将打包好的foo.zip直接加入PYTHONPATH,执行验证命令:
    PYTHONPATH=../foo.zip python -c "from importlib.metadata import version; version('jedi-language-server')"
    

另一种调整方式(不修改打包方式)

如果你不想改变打包方式,也可以修改PYTHONPATH为ZIP文件本身,然后指定包的完整路径:

PYTHONPATH=foo.zip python -c "from importlib.metadata import version; version('foo.jedi-language-server')"

不过更推荐第一种方法,保持包结构与直接安装时一致,无需调整代码逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 02:25:47