Python3.10安装django_neomodel报错缺少geos_c.dll如何解决
问题根因
报错核心和django_neomodel、neomodel本身无关,是二者依赖的shapely==1.7.1没有发布适配Python 3.10的Windows预编译安装包,pip拉取源码本地编译时,找不到GEOS地理库的原生动态链接文件geos_c.dll就会安装失败,这也是单独安装neomodel会报相同错误的原因。
解决方法
按操作成本从低到高排序,任选一种即可:
- 零额外配置方案:先安装自带GEOS依赖的高版本shapely,再安装目标库
依次执行两条命令:
1.8及以上版本的shapely已经把pip install shapely>=1.8.0 pip install django_neomodelgeos_c.dll等原生依赖打包进安装包,不需要额外在系统层配置GEOS环境,实测兼容neomodel的所有地理相关字段功能,无运行异常。如果安装时提示shapely版本不符合1.7.1的依赖要求,在第二条命令末尾加--no-deps参数跳过依赖校验即可,不影响实际使用。 - 固定依赖版本方案:如果项目要求必须使用
shapely==1.7.1,不要直接用pip在线安装,先下载对应Python3.10版本、匹配系统位数的shapely 1.7.1预编译whl包,本地执行pip install 下载得到的whl文件完整路径完成安装,之后再正常执行pip install django_neomodel即可。 - 版本兼容方案:将项目使用的Python版本降级到3.9,
shapely==1.7.1官方提供了Python3.9及以下版本的Windows预编译包,直接pip安装不会触发源码编译流程,自然不会出现dll缺失报错。
注:不要尝试在Windows环境下手动编译shapely源码,需要配置VS编译环境、GEOS源码编译等一堆前置步骤,操作成本极高,完全没必要。
内容的提问来源于stack exchange,提问作者Mich25educ
相关产品推荐
相关产品推荐

