독립형 PyQGIS 처리 스크립트를 실행하는 동안 이상한 문제가 발생했습니다. 스크립트에서 가져 오기 순서는 일반 실행에 영향을줍니다.
파이썬 콘솔을 열고 다음 스크립트를 입력하여 문제를 재현 할 수 있습니다 (GNU / Linux, QGIS 2.6.1, 플러그인 플러그인 v.2.2.0-2 및 Python 2.7.3 사용).
# Prepare the environment
import sys
from qgis.core import QgsApplication
from PyQt4.QtGui import QApplication
app = QApplication([])
QgsApplication.setPrefixPath("/usr", True)
QgsApplication.initQgis()
# Prepare processing framework
sys.path.append('/home/YOUR_USER/.qgis2/python/plugins')
from processing.core.Processing import Processing
Processing.initialize()
print Processing.getAlgorithm("qgis:creategrid")
# Exit applications
QgsApplication.exitQgis()
QApplication.exit()
다음을 얻어야합니다.
ALGORITHM: Create grid
HSPACING <ParameterNumber>
VSPACING <ParameterNumber>
WIDTH <ParameterNumber>
HEIGHT <ParameterNumber>
CENTERX <ParameterNumber>
CENTERY <ParameterNumber>
GRIDTYPE <ParameterSelection>
CRS <ParameterCrs>
SAVENAME <OutputVector>
반면에 수입 순서를 바꾸면 (3, 4 행) 다음과 같이됩니다.
from PyQt4.QtGui import QApplication
from qgis.core import QgsApplication
None
알고리즘을 찾을 수 없으므로 스크립트는 이제 ...를 반환합니다 .
이 문제는 우연히 가져 오기를 잘못된 순서로 쓰면 QGIS에서 처리 알고리즘을 실행할 수 없음을 의미합니다.
StackOverflow에서 확인했지만 Python import order matter 에 따르면 순서는 중요하지 않습니다. 또한 Python 코드 용 스타일 가이드는 표준 (보다 일반적인) 라이브러리를 먼저 가져온 다음 관련 타사 라이브러리를 가져오고 마지막으로 로컬 응용 프로그램 별 가져 오기를 알려줍니다. PyQt4는 수입의 두 번째 범주에 속한다고 생각하지만 PyQGIS는 로컬 응용 프로그램에 따라 다르므로 PyQt4 수입이 먼저 나올 것입니다 (나는 이것에 대해 전문가가 아닙니다).
왜 이런 일이 일어날 수 있는지에 대한 아이디어가 있습니까? 비슷한 것을 경험 한 적이 있습니까?
편집 1 : @ mike-t에서 제안한 것처럼 from abc import *
명시 적 인 항목 (예 :)으로 암시 적 수입 ( )을 변경했습니다 from abc import xyz
.