Python3 ile OSGeo4W kabuğu


17

Python3 ile OSGeo4W kabuk kullanmak istiyorum ama yazarken python3aşağıdaki hatayı alıyorum:

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'ü nasıl kullanabilirim?

Yanıtlar:


24

Toplu iş dosyalarını düzenlemenize (ve işlem sırasında python 2.7'yi kırmanıza) veya ortam değişkenlerini manuel olarak ayarlamanıza gerek yoktur.

Sadece koşmak py3_envotomatik ardından koşmak Python 3 için kabuk ayarlar hangi python3.

Sadece python 2 ve 3 yüklü bir OSGeo4W kabuğundan:

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'de, Luke'un bahsettiği gibi kabuğu python3'e ayarlayan iyi belgelenmiş bir komut yoktur.

py3_env

Temelde PYTHONHOME ve doğru PATH ayarlar. Daha sonra ile Python3'ü arayabilirsiniz 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'ın yorumu ile güncelleme :

Python3'ü QGIS 2 ile birlikte gelen OSGeo4W kabuğu ile kullanmak için dosyayı değiştirmeniz gerekir {path you installed qgis}\etc\ini\python-core.bat:

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

Eğer QGIS 3 ile gelir OSGeo4W kabuğu ile Windows üzerinde bunu yapmak istiyorsan, sen gitmek zorunda kalacak {path you installed qgis}\etc\inive değiştirme python-core.batreferansına Python36yerine Python27o setleri toplu komut PYTHONHOMEve PATH. Ardından python3CLI'den arayın . Ancak, bunun python 2.7'ye olan bağlantıları keseceğini ve sadece aramaya çalışırsanız size bir sözdizimi hatası vereceğini unutmayın python.
auslander

@Auslander kırma python 2.7 bunu yapmanın yolu değil. Cevabımı gör, py3_envPython 3 için kabuğu otomatik olarak ayarlayan çalıştır .
user2856

@Uzak akıllı! Ben düzeltilmiş duruyorum.
auslander

@Luke Cevabımı güncelledim. Kabuktaki komutu göz ardı ettim ve google bana herhangi bir cevap vermedi. Yine de, QGIS 2 ile gelen OSGeo4W kabuğupy3_env
bennos

Qgis 3 (python 3 gerektiren) serbest bırakılmadan önce, qgis 2 python 2 gerektirdiği için sadece tek bir python sürümüne ihtiyaç vardı. OSGeo4W qgis 2'yi gerçekten düşüremedi, bu yüzden her iki qgis 2 + python 2 ve qgis 3 + python 3
user2856

2

Değişikliği kalıcı yapmak istiyorsanız, QGIS (veya OSGEO) dizininizde bulunan OSGeo4W.bat toplu iş dosyasını değiştirebilir ve şunları ekleyebilirsiniz:

call "py3_env"

hat aramasının altında

call "%~dp0\bin\o4w_env.bat"
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.