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

虚拟环境下使用Pyinstaller打包Shapely项目缺失geos_c.dll如何解决

venv环境下Pyinstaller打包Shapely缺失geos_c.dll的解决方案

出现该问题的原因是Pyinstaller默认不会扫描虚拟环境中shapely库自带的DLL目录,因此找不到依赖的geos_c.dll,可通过以下任意一种方法解决:

方法1:打包命令直接附加二进制文件

执行打包命令时通过--add-binary参数手动指定geos_c.dll的路径,Windows环境下命令如下:

pyinstaller --onefile --add-binary "venv/Lib/site-packages/shapely/DLLs/geos_c.dll;." main.py

参数说明:引号内分号前为dll在本地的路径,分号后的.表示打包后将该dll放在exe运行的根目录,单文件模式下会自动解压到运行时临时目录,可被正常识别。

方法2:通过spec文件配置依赖

适合需要多次打包、或需要添加多个依赖的场景:

  1. 先生成spec配置文件:
pyi-makespec --onefile main.py
  1. 打开生成的main.spec文件,找到datas字段,修改为:
datas=[("venv/Lib/site-packages/shapely/DLLs/geos_c.dll", ".")],
  1. 基于修改后的spec文件执行打包:
pyinstaller main.spec

方法3:添加环境变量(本地生效)

将venv\Lib\site-packages\shapely\DLLs路径添加到当前系统的Path环境变量中,重启终端后Pyinstaller即可自动扫描到该dll,无需额外加参数即可正常打包,该方法仅对当前配置过环境变量的设备生效。

注意事项

如果你的虚拟环境名称不是默认的venv,请将上述路径中的venv替换为你实际的虚拟环境文件夹名。

内容的提问来源于stack exchange,提问作者o.sk

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 21:54:04