将SConstruct移植到Python 3

2024-10-06 12:09:32 发布

您现在位置:Python中文网/ 问答频道 /正文

2020年使Python 3兼容的最佳实践是什么

例如,运行old 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

Tags: pyhome错误scriptsfilessconsoldcontrol
1条回答
网友
1楼 · 发布于 2024-10-06 12:09:32

2to3^{}应该有帮助。这只是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

相关问题 更多 >