如何在Rocky Linux 8上通过tox搭建兼容GDAL 3.0.4的测试环境
解决Rocky Linux 8下tox搭建GDAL 3.0.4测试环境的问题
问题根源
tox默认创建虚拟环境时会先安装最新版setuptools和pip,之后才处理你指定的依赖包。而GDAL 3.0.4的setup.py依赖已被新版setuptools移除的use_2to3_fixers选项,导致安装失败。手动创建环境时先降级setuptools再装GDAL可行,但tox的默认流程打乱了这个顺序。
解决方案1:提前降级setuptools(推荐)
修改tox.ini,通过commands_pre在安装其他依赖前强制降级setuptools:
[tox] env_list = py39 [testenv] # 先将setuptools降级到兼容版本 commands_pre = pip install setuptools==57.5.0 deps = gdal==3.0.4 pytest commands = python -m pytest
原理:commands_pre会在安装deps中的包之前执行,确保安装GDAL时使用的是指定的旧版setuptools。
解决方案2:覆盖tox的虚拟环境初始化流程
如果方案1仍有问题,可以强制tox创建虚拟环境时跳过默认的pip/setuptools安装,手动指定版本:
[tox] env_list = py39 [testenv] # 创建虚拟环境时不自动安装pip venv_create_opts = --without-pip commands_pre = # 安装指定版本的pip和setuptools curl https://bootstrap.pypa.io/pip-21.3.1/get-pip.py | python pip install setuptools==57.5.0 deps = gdal==3.0.4 pytest commands = python -m pytest
注:pip 21.3.1与setuptools 57.5.0版本兼容,避免出现版本冲突。
前置系统依赖检查
确保Rocky Linux 8已安装GDAL相关系统开发包,否则Python版GDAL编译会失败:
sudo dnf install epel-release sudo dnf install gdal-devel proj-devel python39-devel
内容的提问来源于stack exchange,提问作者Balaïtous
相关产品推荐
相关产品推荐

