我正在尝试运行一个需要设置某些环境变量的python脚本。我目前正在运行一个.bat脚本来设置这些环境变量,然后调用python脚本。
我想摆脱.bat脚本并在Python脚本中设置所需的环境变量。
这就是.bat脚本的样子 -
SET OSGEO4W_ROOT=C:\Program Files\QGIS 2.18
SET QGISNAME=qgis
SET QGIS=%OSGEO4W_ROOT%\apps\%QGISNAME%
set QGIS_PREFIX_PATH=%QGIS%
CALL "%OSGEO4W_ROOT%\bin\o4w_env.bat"
set PATH=%OSGEO4W_ROOT%\bin;%QGIS%\bin;%PATH%
SET PYTHONHOME=%OSGEO4W_ROOT%\apps\Python27
set PYTHONPATH=%QGIS%\python;%PYTHONPATH%
python D:\temp\fran\NEW\new.py
以下是我试图模仿Python的方法 -
import os
import subprocess
OSGEO4W_ROOT = r'C:\Program Files\QGIS 2.18'
QGISNAME = r'qgis'
QGIS = r'{}\apps\{}'.format(OSGEO4W_ROOT,QGISNAME)
QGIS_PREFIX_PATH = '{}'.format(QGIS)
bat_command = [r'{}\bin\o4w_env.bat'.format(OSGEO4W_ROOT)]
subprocess.check_call(bat_command)
PATH = os.environ['PATH']
PYTHONPATH = os.environ['PYTHONPATH']
os.environ['PATH'] = r'{}\bin;{}\bin;{}'.format(OSGEO4W_ROOT,QGIS,PATH)
os.environ ['PYTHONHOME'] = r'{}\apps\Python27'.format(OSGEO4W_ROOT)
os.environ ['PYTHONPATH'] = r'{}\python;{}'.format(QGIS,PYTHONPATH)
from qgis.core import (QgsProject, QgsComposition, QgsApplication, QgsMapLayerRegistry)
这是我收到的错误消息 -
ImportError: No module named site
当我从.bat文件启动脚本时,一切正常。当我在python中设置环境变量并运行时,我得到一个导入错误。
有什么想法吗?
答案 0 :(得分:0)
你正在踩踏(不是编辑)PYTHONPATH
。在原始批处理文件中,我们有:
set PYTHONPATH=%QGIS%\python;%PYTHONPATH%
请注意,这会将另一个目录添加到路径中。你的代码:
os.environ['PYTHONPATH'] = r'{}\python;'.format(QGIS,PYTHONPATH)
踩踏PYTHONPATH
。你需要更像的东西:
os.environ['PYTHONPATH'] = r'{}\python;'.format(QGIS) + PYTHONPATH