瀏覽代碼

avoid usage of os.environb, inspired by https://stackoverflow.com/questions/52269281/fix-import-error-on-using-environb-in-python, see https://trac.osgeo.org/grass/ticket/3723

git-svn-id: https://svn.osgeo.org/grass/grass/trunk@73906 15284696-431f-4ddb-bdfa-cd5b030d7da7
Martin Landa 6 年之前
父節點
當前提交
fef55ab82b
共有 1 個文件被更改,包括 4 次插入5 次删除
  1. 4 5
      lib/python/script/core.py

+ 4 - 5
lib/python/script/core.py

@@ -27,6 +27,7 @@ import shutil
 import codecs
 import string
 import random
+import pipes
 import types as python_types
 
 from .utils import KeyValue, parse_key_val, basename, encode, decode
@@ -39,12 +40,10 @@ gettext.install('grasslibs', os.path.join(os.getenv("GISBASE"), 'locale'))
 try:
     # python2
     import __builtin__
-    from os import environ
     __builtin__.__dict__['_'] = __builtin__.__dict__['_'].__self__.ugettext
 except ImportError:
     # python3
     import builtins as __builtin__
-    from os import environb as environ
     unicode = str
     __builtin__.__dict__['_'] = __builtin__.__dict__['_'].__self__.gettext
 
@@ -820,9 +819,9 @@ def parser():
         print("You must be in GRASS GIS to run this program.", file=sys.stderr)
         sys.exit(1)
 
-    cmdline = [basename(encode(sys.argv[0]))]
-    cmdline += [b'"' + encode(arg) + b'"' for arg in sys.argv[1:]]
-    environ[b'CMDLINE'] = b' '.join(cmdline)
+    cmdline = [basename(sys.argv[0])]
+    cmdline += [pipes.quote(a) for a in sys.argv[1:]]
+    os.environ['CMDLINE'] = ' '.join(cmdline)
 
     argv = sys.argv[:]
     name = argv[0]