Оболонка OSGeo4W з python3


17

Я хотів би використовувати оболонку OSGeo4W з Python3, але при введенні 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який встановлює оболонку для Python 3 автоматично, а потім запустіть python3.

З оболонки OSGeo4W із встановленими лише python 2 та 3:

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

Існує не добре задокументована команда вбудована в оболонку OSGeo4W, яка встановлює оболонку до python3, як згадує Лука

py3_env

В основному це встановлює ваш PYTHONHOME і правильну ПАТУ. Тоді ви можете зателефонувати на 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.
>>>

Оновити коментарем аусландера:

Щоб використовувати Python3 з оболонкою OSGeo4W, що постачається з QGIS 2, вам потрібно змінити файл {path you installed qgis}\etc\ini\python-core.bat:

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

Якщо ви хочете зробити це в Windows з оболонкою OSGeo4W, що постачається з QGIS 3, вам доведеться зайти {path you installed qgis}\etc\iniі змінити python-core.batпосилання Python36замість Python27пакетного сценарію, який встановлює PYTHONHOMEі PATH. Потім телефонуйте python3з CLI. Однак зауважте, що це порушить посилання на python 2.7 та надасть помилку в синтаксисі, якщо ви спробуєте просто зателефонувати python.
аусланд

@Auslander зламати python 2.7 - це не спосіб зробити це. Дивіться мою відповідь, просто запустіть, py3_envякий автоматично встановлює оболонку для Python 3.
користувач2856

@Luke розумний! Я стою виправлений.
аусланд

@Luke Я оновив свою відповідь. Я пропустив команду в оболонці, і Google не дав мені жодної відповіді. Проте оболонка OSGeo4W, яка постачається разом із QGIS 2, не маєpy3_env
bennos

До виходу qgis 3 (для якого потрібен python 3) існувала лише потреба в одній версії python, оскільки qgis 2 вимагає python 2. OSGeo4W не міг справді скинути qgis 2, тому їм довелося знайти якийсь спосіб підтримки обох qgis 2 + python 2 та qgis 3 + python 3.
user2856

2

Якщо ви хочете зробити зміни постійними, ви можете змінити пакетний файл OSGeo4W.bat, що знаходиться у вашому каталозі QGIS (або OSGEO), і просто додати:

call "py3_env"

нижче лінії дзвінка

call "%~dp0\bin\o4w_env.bat"
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.