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ซึ่งกำหนดขึ้นสำหรับการเปลือกหลาม 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 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.
>>>

อัปเดตด้วยความคิดเห็นของ auslander:

ในการใช้ 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 อย่างไรก็ตามทราบว่านี่จะทำลายการเชื่อมโยงไปหลาม 2.7 pythonและให้คุณไวยากรณ์ผิดพลาดถ้าคุณพยายามที่จะเรียกเพียง
auslander

@Auslander ทำลาย python 2.7 ไม่ใช่วิธีการที่ทำได้ ดูคำตอบของฉันเพียงแค่เรียกใช้py3_envซึ่งตั้งค่าเปลือกสำหรับ Python 3 โดยอัตโนมัติ
2856

@ ลุคฉลาด! ฉันยืนแก้ไขแล้ว
auslander

@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
2856

2

หากคุณต้องการทำการเปลี่ยนแปลงแบบถาวรคุณสามารถแก้ไขไฟล์แบตช์ OSGeo4W.bat ที่อยู่ในไดเร็กทอรี QGIS (หรือ OSGEO) ของคุณและเพิ่ม:

call "py3_env"

ด้านล่างสายโทร

call "%~dp0\bin\o4w_env.bat"
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.