Windows CMD运行OSGeo4W批处理报错No module named site的解决方法
解决Python报错"No module named site"的问题
你遇到的这个错误通常是因为Python无法正确定位到它的核心模块目录,尤其是在使用OSGeo4W打包的Python环境时,手动设置环境变量容易遗漏关键配置或者出现路径冲突。下面是几个针对性的解决方案:
1. 确保OSGEO4W_ROOT变量正确定义
你的批处理里用到了%OSGEO4W_ROOT%,但如果这个环境变量没有预先设置,后续的路径都会变成无效的空值。可以在批处理开头手动指定这个变量,同时补充必要的核心目录:
@ECHO ON REM 先明确OSGeo4W的根目录 SET OSGEO4W_ROOT=C:\OSGeo4W64 SET PYTHONHOME=%OSGEO4W_ROOT%\apps\Python27 REM 补充DLLs目录到PYTHONPATH,这是Python核心模块依赖的关键路径 SET PYTHONPATH=%OSGEO4W_ROOT%\apps\Python27\Lib;%OSGEO4W_ROOT%\apps\Python27\DLLs REM 把OSGeo4W的核心依赖路径放到PATH最前面,避免系统其他Python环境干扰 PATH %OSGEO4W_ROOT%\bin;%OSGEO4W_ROOT%\apps\Python27;%OSGEO4W_ROOT%\apps\Python27\Scripts;%PATH% C:\OSGeo4W64\apps\Python27\Scripts\sentinelsat.exe -u <user> -p <password> -s 20150101 -e 20150105 --instrument MSI --uuid 0d7bb0a5-5a0e-4de4-a41e-1599edf26825 --path <path> -d @pause
2. 调用OSGeo4W自带的环境初始化脚本
OSGeo4W提供了专门的o4w_env.bat脚本,能自动配置所有组件的依赖环境,比手动设置变量更可靠:
@ECHO ON REM 调用OSGeo4W的环境初始化脚本,它会自动处理PYTHONHOME、PYTHONPATH等变量 CALL "C:\OSGeo4W64\bin\o4w_env.bat" REM 环境配置完成后直接运行命令即可 C:\OSGeo4W64\apps\Python27\Scripts\sentinelsat.exe -u <user> -p <password> -s 20150101 -e 20150105 --instrument MSI --uuid 0d7bb0a5-5a0e-4de4-a41e-1599edf26825 --path <path> -d @pause
3. 直接用指定Python解释器运行sentinelsat
有时候直接运行sentinelsat.exe可能会误调用系统中其他版本的Python,导致环境不匹配。可以改用Python解释器直接调用模块的方式,确保使用的是OSGeo4W自带的环境:
@ECHO ON SET OSGEO4W_ROOT=C:\OSGeo4W64 PATH %OSGEO4W_ROOT%\bin;%OSGEO4W_ROOT%\apps\Python27;%OSGEO4W_ROOT%\apps\Python27\Scripts;%PATH% REM 用OSGeo4W的Python直接执行sentinelsat模块 %OSGEO4W_ROOT%\apps\Python27\python.exe -m sentinelsat -u <user> -p <password> -s 20150101 -e 20150105 --instrument MSI --uuid 0d7bb0a5-5a0e-4de4-a41e-1599edf26825 --path <path> -d @pause
额外提醒
- Python 2.7已经停止官方支持,如果你后续遇到更多兼容性问题,建议考虑升级到Python 3.x版本的OSGeo4W环境(前提是sentinelsat支持Python 3)。
- 检查系统中是否安装了其他Python版本,确保PATH中OSGeo4W的路径优先级高于其他Python目录,避免环境变量混淆。
内容的提问来源于stack exchange,提问作者Bárbara Duarte
相关产品推荐
相关产品推荐

