python3を使用したOSGeo4Wシェル


15

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を使用するにはどうすればよいですか?

回答:


21

バッチファイルを編集したり(プロセスでpython 2.7を壊したり)、環境変数を手動で設定する必要はありません。

py3_envPython 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

OSGeo4W Shellには、Lukeが言及しているように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.
>>>

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%

WindowsでQGIS 3に付属のOSGeo4Wシェルを使用してこれを行うには、およびを設定するバッチスクリプトではなく、参照に移動し{path you installed qgis}\etc\iniて変更する必要python-core.batがあります。次に、CLIから呼び出します。ただし、を呼び出すと、Python 2.7へのリンクが切断され、構文エラーが発生することに注意してください。Python36Python27PYTHONHOMEPATHpython3python
オーランダー

@AuslanderがPython 2.7を壊すことは、これを行う方法ではありません。私の答えを見て、py3_envPython 3用のシェルを自動的に設定するだけで実行してください。
user2856

@ルーク賢い!私は訂正します。
オースランダー

@ルーク答えを更新しました。シェルのコマンドを見落としていましたが、グーグルは答えをくれませんでした。それでも、QGIS 2が付属していますOSGeo4Wシェルはありませんpy3_env
bennos

qgis 3(python 3を必要とする)がリリースされる前は、qgis 2はpython 2を必要とするため、単一バージョンのpythonのみが必要でした。 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.