QGIS – Fixing QGIS Python SyntaxError in site.py

batpyqgispythonqgiswindows

I am executing a .py file from a windows .bat file for doing a QGIS Desktop 3.8.3 geoprocessing task.

I am using the following .bat file :

@echo off
call C:\OSGeo4W64\bin\o4w_env.bat
REM Change OSGEO4W_ROOT to point to the base install folder
set QGIS_PREFIX_PATH=C:\OSGeo4W64\apps\qgis
REM Gdal Setup
set GDAL_DATA=C:\OSGeo4W64\share\gdal\
REM Python Setup
set PATH=C:\OSGeo4W64\bin;C:\OSGeo4W64\apps\qgis\bin;%PATH%
SET PYTHONHOME=C:\OSGeo4W64\apps\Python37
set PYTHONPATH=C:\OSGeo4W64\apps\qgis\python;%PYTHONPATH%

REM Launch python job
python C:/Task/Task.py
pause

When I execute this Task.bat in C:/Task/, I am getting the following error.

  File "C:\OSGeo4W64\apps\Python37\lib\site.py", line 177
    file=sys.stderr)
        ^
SyntaxError: invalid syntax
Press any key to continue . . .

There are 2 python files namely Python27 and Python37 in C:\OSGeo4W64\apps\ .

The python-core.bat file in C:\OSGeo4W64\etc\ini\ is :

SET PYTHONHOME=%OSGEO4W_ROOT%\apps\Python37
PATH %OSGEO4W_ROOT%\apps\Python37\Scripts;%PATH%

When I open OSGeo4W.bat in C:\OSGeo4W64\ and type 'python', it is showing me SyntaxError and when I type 'python3', it is showing the version of python as given below.

run o-help for a list of available commands
C:\OSGeo4W64>python
  File "C:\OSGEO4~1\apps\Python37\lib\site.py", line 177
    file=sys.stderr)
        ^
SyntaxError: invalid syntax

C:\OSGeo4W64>python3
Python 3.7.0 (v3.7.0:1bf9cc5093, Jun 27 2018, 04:59:51) [MSC v.1914 64 bit 
(AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>

My python code C:/Task/Task.py starts as given below :

from osgeo import ogr, gdal
from gdalconst import *
from qgis.core import *
import qgis.utils, sys
from qgis.gui import *
from PyQt5.QtGui import *
from PyQt5.QtCore import Qt
from PyQt5.QtCore import QFileInfo
app = QApplication([])
QgsApplication.setPrefixPath("C:/OSGeo4W64/apps/qgis", True)
QgsApplication.initQgis()
sys.path.append('C:/OSGeo4W64/apps/qgis/python/plugins')
import processing
from processing.core.Processing import Processing
Processing.initialize()
from processing.tools import *

How can I solve this SyntaxError for executing Task.bat in C:/Task/ ?

Best Answer

The solution to this issue is to change python C:/Task/Task.py to python3 C:/Task/Task.py in C:/Task/Task.bat, so that it is using python3 interpreter.