【问题标题】:Porting SConstruct to Python 3将 SConstruct 移植到 Python 3
【发布时间】:2020-09-05 09:25:49
【问题描述】:

2020 年使SConstruct Python 3 兼容的最佳做法是什么?

例如,运行旧的SConstruct 会出现这样的错误。

✗ python ~/scons/scripts/scons.py
scons: Reading SConscript files ...
  File "/home/techtonik/Folding@home/fah-control/SConstruct", line 17

    except Exception, e:

                    ^

SyntaxError: invalid syntax

【问题讨论】:

标签: python python-3.x scons


【解决方案1】:

2to3modernize 应该会有所帮助。只是 Python 语法有问题。

2to3 是 Python 自带的,也可以作为 Python 模块执行:

python -m lib2to3 -w SConstruct

这是建议的补丁2to3,看起来很小:

RefactoringTool: Refactored SConstruct
--- SConstruct  (original)
+++ SConstruct  (refactored)
@@ -3,8 +3,8 @@
 env = Environment(ENV = os.environ)
 try:
     env.Tool('config', toolpath = [os.environ.get('CBANG_HOME')])
-except Exception, e:
-    raise Exception, 'CBANG_HOME not set?\n' + str(e)
+except Exception as e:
+    raise Exception('CBANG_HOME not set?\n' + str(e))
 
 env.CBLoadTools('packager run_distutils osx fah-client-version')
 env.CBAddVariables(
@@ -14,7 +14,7 @@
 # Version
 try:
     version = env.FAHClientVersion()
-except Exception, e:
+except Exception as e:
     print(e)
     version = '0.0.0'
     env.Replace(PACKAGE_VERSION = version)
RefactoringTool: Files that need to be modified:
RefactoringTool: SConstruct

【讨论】:

  • 你是怎么得到这个差异的?
  • 这是运行 2to3 的输出(关于运行其他跳棋的几行代码被剪掉了)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-29
  • 2017-06-18
  • 2012-09-23
  • 2020-12-28
  • 1970-01-01
  • 2012-06-13
相关资源
最近更新 更多