python3이있는 OSGeo4W 쉘


17

Python3에서 OSGeo4W 셸을 사용하고 싶지만 입력 python3하면 다음 오류가 발생합니다.

Fatal Python error: Py_Initialize: unable to load the file system codec
  File "C:\OSGEO4~1\apps\Python27\lib\encodings\__init__.py", line 123
    raise CodecRegistryError,\
                            ^
SyntaxError: invalid syntax

Python3을 어떻게 사용할 수 있습니까?

답변:


24

배치 파일을 편집하거나 프로세스에서 Python 2.7을 중단하거나 환경 변수를 수동으로 설정할 필요가 없습니다.

그냥 실행 py3_env를 자동으로 다음 실행 파이썬 3를 위해 쉘 설정하는 python3.

Python 2 & 3 만 설치된 OSGeo4W 쉘에서 :

C:\> o-help
                   -={ OSGeo4W Shell Commands }=-

       dllupdate           pip3                sqlite3
       easy_install3       python              textreplace
       nircmd              python3             vcredist_2015_x64
       nircmdc             pythonw             xxmklink
       osgeo4w-setup       pythonw3


       make-bat-for-py   py3_env  <<<=== This is the command you want
       o-help            setup-test
       o4w_env           setup



C:\>python3
Fatal Python error: Py_Initialize: unable to load the file system codec
ModuleNotFoundError: No module named 'encodings'

Current thread 0x000013e8 (most recent call first):
^C

C:\>py3_env
C:\>python3

Python 3.6.0 (v3.6.0:41df79263a11, Dec 23 2016, 08:06:12) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>

12

Luke가 언급 한 것처럼 쉘을 python3으로 설정하는 OSGeo4W Shell에는 문서화되지 않은 명령 빌드가 있습니다.

py3_env

기본적으로 PYTHONHOME 및 올바른 PATH를 설정합니다. 그런 다음로 Python3을 호출 할 수 있습니다 python3.

C:\>py3_env
C:\>SET PYTHONPATH=
C:\>SET PYTHONHOME=C:\OSGEO4~1\apps\Python36
C:\>PATH C:\OSGEO4~1\apps\Python36;C:\OSGEO4~1\apps\Python36\Scripts;C:\OSGEO4~1\apps\Python27\Scripts;C:\OSGEO4~1\bin;C:\Windows\system32;C:\Windows;C:\Windows\WBem
C:\>python3
Python 3.6.0 (v3.6.0:41df79263a11, Dec 23 2016, 08:06:12) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>

auslander의 의견으로 업데이트 :

QGIS 2와 함께 제공되는 OSGeo4W 쉘에서 Python3을 사용하려면 파일을 변경해야합니다 {path you installed qgis}\etc\ini\python-core.bat.

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

당신이 QGIS 3와 함께 제공되는 OSGeo4W 쉘 Windows에서이 작업을 수행하려면로 이동해야합니다 {path you installed qgis}\etc\ini수정 python-core.bat참조로 Python36대신 Python27이 세트 배치 스크립트 PYTHONHOMEPATH. 그런 다음 python3CLI에서 호출 하십시오. 그러나 이것은 python 2.7에 대한 링크를 중단하고 그냥 호출하려고하면 구문 오류가 발생합니다 python.
auslander

@Auslander python 2.7을 깨는 것은 그렇게하는 방법이 아닙니다. 내 대답을 참조하십시오. 실행 py3_env하면 Python 3에 대한 셸이 자동으로 설정됩니다.
user2856

@ 루크 영리한! 나는 정정되었다.
auslander

@Luke 내 답변을 업데이트했습니다. 나는 껍질의 명령을 간과했고 구글은 나에게 아무런 대답도주지 않았다. 그럼에도 불구하고, QGIS 2와 함께 제공되는 OSGeo4W 쉘은 없습니다py3_env
bennos

qgis 3 (python 3 필요)이 릴리스되기 전에 qgis 2에는 python 2가 필요하므로 단일 버전의 python 만 필요했습니다. OSGeo4W는 실제로 qgis 2를 삭제할 수 없으므로 qgis 2 + python 2와 qgis 3 + python 3
user2856

2

영구적으로 변경하려면 QGIS (또는 OSGEO) 디렉토리에있는 배치 파일 OSGeo4W.bat를 수정하고 다음을 추가하십시오.

call "py3_env"

전화선 아래

call "%~dp0\bin\o4w_env.bat"
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.