带有python3的OSGeo4W外壳


16

我想将OSGeo4W shell与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?

Answers:


23

无需编辑批处理文件(并在此过程中破坏python 2.7)或手动设置环境变量。

只需运行即可py3_env自动为Python 3设置外壳,然后运行python3

从仅安装了python 2&3的OSGeo4W shell:

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所提到的,它将Shell设置为python3

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.
>>>

用澳大利亚人的评论更新

要将Python3与QGIS 2随附的OSGeo4W外壳一起使用,您必须更改文件{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 shell进行此操作,则必须进入{path you installed qgis}\etc\ini并进行修改python-core.bat以引用,Python36而不是Python27在设置PYTHONHOME和的批处理脚本中进行引用PATH。然后python3从CLI 调用。但是请注意,这将断开到python 2.7的链接,并在尝试调用just时给您带来语法错误python
澳洲人

@Auslander破坏python 2.7并不是这样做的方法。看到我的答案,只需运行即可py3_env自动为Python 3设置外壳。
user2856 '18

@卢克聪明!我站得住了。
auslander'Aug

@卢克我已经更新了答案。我忽略了外壳程序中的命令,谷歌没有给我任何答案。不过,QGIS 2随附的OSGeo4W外壳没有py3_env
bennos

在发布qgis 3(需要python 3)之前,只需要一个版本的python,因为qgis 2需要python2。OSGeo4W不能真正放弃qgis 2,因此他们必须找到某种方式来支持两个qgis 2 + python 2和qgis 3 +
python3。– user2856

2

如果要使更改永久生效,可以修改位于QGIS(或OSGEO)目录中的批处理文件OSGeo4W.bat,然后添加:

call "py3_env"

在电话下面

call "%~dp0\bin\o4w_env.bat"
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.