本文介绍了将 SConstruct 移植到 Python 3的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
2020 年使 SConstruct Python 3 兼容的最佳实践是什么?
What is the best practice in 2020 to make SConstruct Python 3 compatible?
例如,运行旧的 SConstruct 会出现这样的错误.
For example, running old SConstruct gives errors like this.
✗ 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 推荐答案2to3 或 modernize 应该会有所帮助.这只是 Python 语法的问题.
2to3 or modernize ought to help. it's just Python syntax that's at issue.
2to3 随 Python 一起提供,也可以作为 Python 模块执行:
2to3 is shipped with Python, and can also be executed as a Python module:
python -m lib2to3 -w SConstruct这是建议的补丁 2to3,看起来很小:
Here's the patch 2to3 suggested, looks pretty minor:
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更多推荐
将 SConstruct 移植到 Python 3
发布评论