1. 为什么选择Anaconda虚拟环境进行QGIS二次开发搞GIS开发的朋友应该都遇到过这样的场景电脑上同时跑着多个项目有的需要QGIS 3.10有的需要QGIS 3.22还有的要用最新版的插件。直接安装多个QGIS版本系统环境绝对乱成一锅粥。这时候Anaconda虚拟环境就是救命稻草了。我去年接手一个老项目就踩过大坑系统环境装的QGIS 3.18结果项目需要用的插件只支持3.14版本。折腾了两天都没搞定依赖冲突最后用conda新建了个虚拟环境10分钟就解决了问题。虚拟环境最大的优势就是环境隔离每个项目都有自己的Python解释器和依赖库互不干扰。相比virtualenv等工具Anaconda在GIS开发中有三个不可替代的优势预编译的二进制包conda-forge渠道的QGIS安装包都是预编译好的不用自己折腾GDAL这些地理库的编译跨平台一致性同样的conda命令在Windows、Mac和Linux下都能用依赖自动解析安装QGIS时会自动处理PROJ、GDAL等复杂依赖关系注意建议使用Python 3.7.x版本这是目前QGIS最稳定的兼容版本。我测试过3.8和3.9某些插件会出现奇怪的兼容性问题。2. 从零搭建QGIS开发环境2.1 安装Anaconda并配置国内镜像首先去 Anaconda官网 下载最新版安装时记得勾选Add to PATH选项。安装完成后打开Anaconda Prompt执行以下命令配置清华镜像源conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/ conda config --set show_channel_urls yes2.2 创建专用虚拟环境推荐为每个QGIS项目创建独立环境这里以qgis_dev为例conda create -n qgis_dev python3.7.6 conda activate qgis_dev2.3 安装QGIS核心组件通过conda-forge渠道安装QGIS全家桶conda install -c conda-forge qgis qgis-deps安装完成后验证是否成功qgis --version如果能看到版本号输出说明GUI组件安装正确。这时候虽然能打开QGIS界面但Python环境中还无法import qgis需要继续配置。3. 解决Python环境导入问题3.1 获取QGIS Python路径启动QGIS GUI在插件菜单中打开Python控制台执行import sys print(sys.path)你会看到一个包含多个路径的列表类似这样[ C:/Program Files/QGIS 3.22/bin/python, C:/Users/username/AppData/Roaming/QGIS/QGIS3/profiles/default/python, ... ]3.2 将路径添加到虚拟环境在Anaconda Prompt中执行替换为你的实际路径conda develop C:/Program Files/QGIS 3.22/bin/python conda develop C:/Users/username/AppData/Roaming/QGIS/QGIS3/profiles/default/python现在可以在Python中测试导入from qgis.core import * print(Qgis.QGIS_VERSION)如果输出版本号恭喜你最难的坎已经迈过去了4. 配置PyCharm实现智能补全4.1 项目解释器设置在PyCharm中新建项目选择Existing interpreter定位到Anaconda虚拟环境下的Python.exe通常路径为C:\Users\用户名\anaconda3\envs\qgis_dev\python.exe4.2 解决代码补全失效问题QGIS的Python包有些特殊需要手动复制才能触发PyCharm的代码分析找到Anaconda安装目录下的qgis包anaconda3\pkgs\qgis-3.xx\Library\python\qgis复制到虚拟环境的site-packages目录anaconda3\envs\qgis_dev\Lib\site-packages\qgis在PyCharm中右键该目录 → Mark Directory as → Sources Root4.3 调试配置技巧在Run/Debug Configurations中添加Python配置需要设置以下环境变量PYTHONPATHC:/Program Files/QGIS 3.22/bin PATHC:/Program Files/QGIS 3.22/bin;%PATH%5. 处理GIS特有的环境问题5.1 解决GDAL数据路径问题在代码开头添加以下配置路径需替换为你的实际位置import os os.environ[PROJ_LIB] rC:\Users\username\anaconda3\envs\qgis_dev\Library\share\proj os.environ[GDAL_DATA] rC:\Users\username\anaconda3\envs\qgis_dev\Library\share\gdal5.2 常见错误排查ImportError: DLL load failed 检查环境变量PATH是否包含QGIS的bin目录Proj相关错误 更新proj包版本conda update -c conda-forge proj图形界面卡死 在代码中添加Qt事件循环处理from qgis.PyQt.QtCore import QCoreApplication app QCoreApplication.instance() if app is None: import sys from qgis.PyQt.QtWidgets import QApplication app QApplication(sys.argv)6. 离线环境部署方案对于内网开发环境可以这样打包在联网机器上完成上述所有步骤使用conda-pack打包环境conda pack -n qgis_dev -o qgis_dev.tar.gz将压缩包复制到离线机器解压到anaconda3/envs/目录在PyCharm中指定解压后的python.exe路径我去年给某地质单位部署时就用的这个方法省去了他们配置环境的痛苦过程。记得打包前先测试所有功能避免漏掉某些动态链接库。