Python3 के साथ OSGeo4W शेल


17

मैं 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

मैं पायथन 3 का उपयोग कैसे कर सकता हूं?

जवाबों:


24

बैच फ़ाइलों को संपादित करने की आवश्यकता नहीं है (और इस प्रक्रिया में अजगर 2.7 को तोड़ दें) या पर्यावरण चर को मैन्युअल रूप से सेट करें।

बस चलाएं py3_envजो पायथन 3 के लिए शेल को स्वचालित रूप से सेट करता है, फिर चलाएं python3

बस 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 शेल में एक अच्छी तरह से प्रलेखित कमांड बिल्ड नहीं है, जो ल्यूक उल्लेख के रूप में शेल को 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 की टिप्पणी के साथ अपडेट करें:

OSGeo4W शेल के साथ Python3 का उपयोग करने के लिए जो 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करना होगा जो सेट करता है और । फिर सीएलआई से कॉल करें । हालाँकि यह ध्यान दें कि यह python 2.7 के लिंक को तोड़ देगा और यदि आप सिर्फ कॉल करने का प्रयास करते हैं तो आपको एक सिंटैक्स त्रुटि देगा । Python36Python27PYTHONHOMEPATHpython3python
मौसैंडर

@ ऑसलैंडर ब्रेकिंग अजगर 2.7 ऐसा करने का तरीका नहीं है। मेरा जवाब देखें, बस चलाएं py3_envजो पायथन 3 के लिए शेल को स्वचालित रूप से सेट करता है।
user2856

@ बहुत चालाक! मुझे सही साबित होना है।
अनुस्वार

@ ल्यूक मैंने अपना उत्तर अपडेट कर दिया है। मैंने शेल में कमांड की अनदेखी की और Google ने मुझे कोई जवाब नहीं दिया। फिर भी, QGIS 2 के साथ आने वाले OSGeo4W शेल में py3_env
9

इससे पहले कि क्यूगिस 3 (जिसके लिए अजगर 3 की आवश्यकता होती है) जारी किया गया था, केवल अजगर के एक ही संस्करण की आवश्यकता थी क्योंकि क्यूगिस 2 के लिए अजगर 2 की आवश्यकता होती है। OSGeo4W वास्तव में qgis 2 को नहीं छोड़ सकता है, इसलिए उन्हें qgis 2 + का समर्थन करने का कोई तरीका खोजना होगा। अजगर 2 और कगिस 3 + अजगर 3.
user2856

2

यदि आप परिवर्तन को स्थायी बनाना चाहते हैं, तो आप अपने QGIS (या OSGEO) निर्देशिका में स्थित बैच फ़ाइल OSGeo4W.bat को संशोधित कर सकते हैं और बस जोड़ सकते हैं:

call "py3_env"

लाइन कॉलिंग के नीचे

call "%~dp0\bin\o4w_env.bat"
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.