1. 脚本运行环境问题:Python版本不兼容、缺少依赖库、环境变量配置错误

说实话,我见过太多人卡在脚本运行的第一步了。明明代码写得没问题,一跑就报错。我刚开始做地图数据处理那会儿,也经常被环境问题搞得头大。今天咱们就把这几个坑一个一个填平。

1.1 Python版本不兼容

Python版本这事儿,看着简单,其实挺容易翻车的。我遇到过有人用Python 3.12跑一个只支持3.8的脚本,结果一堆语法报错。

为什么会这样?

很多地图处理库,比如GDAL、Fiona,它们对Python版本有明确要求。你想想看,GDAL的某些版本只支持到Python 3.9,你非要用3.11去跑,那肯定不行。

我的建议:

  • 先看脚本头部的注释,一般会写「Requires Python 3.6+」
  • 用 python --version 检查当前版本
  • 实在不行就装个pyenv,随时切换版本

小技巧:我个人习惯在项目根目录放一个 .python-version 文件,里面写上版本号。这样团队里谁拉代码都不会搞错。

1.2 缺少依赖库

这个坑我踩过太多次了。尤其是GDAL和Fiona,这两个库的安装方式跟普通Python包不太一样。

常见报错长这样:

ModuleNotFoundError: No module named 'osgeo'
ImportError: DLL load failed while importing gdal

嗯,看到这种报错,基本就是GDAL没装好。我记得有一次帮同事排查,他pip install gdal装了半天,结果发现系统里根本没装GDAL的C++库。

避坑指南:

  • GDAL不能直接pip安装,得先装系统级的GDAL库
  • Windows用户建议用conda:conda install gdal
  • Linux用户:sudo apt install libgdal-dev
  • Fiona也一样,依赖GDAL,顺序不能乱

我推荐的做法:

# 用conda环境,省心
conda create -n gis_env python=3.9
conda activate gis_env
conda install gdal fiona geopandas

你想想看,用conda一次搞定所有依赖,比手动一个个装省事多了。

1.3 环境变量配置错误

这个最隐蔽。脚本能跑,但一处理大数据就崩。我遇到过一个人,GDAL装好了,但环境变量没配,结果读取GeoTIFF时总报错。

关键环境变量:

变量名 作用 常见问题
GDAL_DATA 指定GDAL数据文件路径 不设置会导致坐标参考系识别失败
PROJ_LIB 指定PROJ库路径 不设置会导致投影转换报错
PATH 包含GDAL可执行文件路径 不设置会导致命令行工具找不到

检查方法:

# 在Python里检查
from osgeo import gdal
print(gdal.__version__)  # 能打印版本说明环境变量基本OK

# 检查GDAL_DATA
import os
print(os.environ.get('GDAL_DATA'))  # 如果是None,说明没设置

我曾经在一个项目里,脚本在Windows上跑得好好的,部署到Linux服务器就崩了。查了半天,原来是Linux上GDAL_DATA没设置。说白了,跨平台部署时环境变量最容易出问题。

知识体系梳理

下面这张图,是我根据多年经验总结的。你看一眼就能明白这三个问题之间的关系。

脚本运行环境问题排查框架 Python版本不兼容 缺少依赖库 环境变量配置错误 检查脚本头部版本要求 使用pyenv管理多版本 创建独立虚拟环境 GDAL需先装系统级库 推荐conda一键安装 Fiona依赖GDAL顺序 检查GDAL_DATA变量 检查PROJ_LIB变量 跨平台部署特别注意 排查顺序:版本 → 依赖 → 环境变量

我的经验总结:遇到脚本跑不起来,先别急着看代码。按这个顺序排查:Python版本对不对 → 依赖装没装全 → 环境变量配没配。80%的问题都能解决。

好了,这一章的内容就到这儿。记住,环境问题不可怕,可怕的是不知道从哪儿下手。按我上面说的步骤来,基本都能搞定。

可可精品资料库