Vỏ OSGeo4W với python3


15

Tôi muốn sử dụng shell OSGeo4W với Python3 nhưng khi gõ python3tôi gặp lỗi sau:

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

Tôi có thể sử dụng Python3 như thế nào?

Câu trả lời:


21

Không cần chỉnh sửa các tệp bó (và phá vỡ python 2.7 trong quy trình) hoặc đặt thủ công các biến môi trường.

Chỉ cần chạy tự động py3_envthiết lập shell cho Python 3, sau đó chạy python3.

Từ trình vỏ OSGeo4W chỉ với python 2 & 3 được cài đặt:

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

Có một lệnh được tạo tài liệu tốt trong OSGeo4W Shell, thiết lập shell lên tới python3 như Luke đề cập

py3_env

Về cơ bản, nó thiết lập PYTHONHOME của bạn và đúng PATH. Sau đó, bạn có thể gọi Python3 với 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.
>>>

Cập nhật với nhận xét của auslander:

Để sử dụng Python3 với trình bao OSGeo4W đi kèm với QGIS 2, bạn phải thay đổi tệp {path you installed qgis}\etc\ini\python-core.bat:

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

Nếu bạn muốn làm điều này trên Windows với trình bao OSGeo4W đi kèm với QGIS 3, bạn sẽ phải đi vào {path you installed qgis}\etc\inivà sửa đổi python-core.batđể tham chiếu Python36thay vì Python27trong tập lệnh bó đặt PYTHONHOMEPATH. Sau đó gọi python3từ CLI. Tuy nhiên, lưu ý rằng điều này sẽ phá vỡ các liên kết đến python 2.7 và cung cấp cho bạn một lỗi cú pháp nếu bạn cố gắng gọi chỉ python.
auslander

@Auslander phá python 2.7 không phải là cách để làm điều này. Xem câu trả lời của tôi, chỉ cần chạy tự động py3_envthiết lập shell cho Python 3.
dùng2856

@Luke thông minh! Tôi đứng sửa.
auslander

@Luke Tôi đã cập nhật câu trả lời của tôi. Tôi bỏ qua lệnh trong shell và google không cho tôi bất kỳ câu trả lời nào. Tuy nhiên, hệ vỏ OSGeo4W đi kèm với QGIS 2 không cópy3_env
bennos

Trước khi qgis 3 (yêu cầu python 3) được phát hành, chỉ cần một phiên bản duy nhất của python vì qgis 2 yêu cầu python 2. OSGeo4W không thể thực sự bỏ qgis 2 vì vậy họ phải tìm cách hỗ trợ cả qgis 2 + python 2 và qgis 3 + python 3.
user2856

2

Nếu bạn muốn thay đổi vĩnh viễn, bạn có thể sửa đổi tệp bó OSGeo4W.bat nằm trong thư mục QGIS (hoặc OSGEO) của bạn và chỉ cần thêm:

call "py3_env"

bên dưới đường dây gọi

call "%~dp0\bin\o4w_env.bat"
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.