虽然 WebAssembly
的编译脚本已经对 Python2 和 Python3 作出了区别,但在某些地方,尤其是使用到字符串的地方却没有作出分别
例如 ./emsdk install sdk-incoming-64bit binaryen-master-64bit
安装 WebAssembly
就会出错
Installing SDK 'sdk-incoming-64bit'.. Installing tool 'clang-incoming-64bit'.. Repository 'https://github.com/kripken/emscripten-fastcomp.git' already cloned to directory '/Users/yufei/Downloads/emsdk/clang/fastcomp/src', skipping. Fetching latest changes to the branch 'incoming' for '/Users/yufei/Downloads/emsdk/clang/fastcomp/src'... Already up-to-date. Successfully updated and checked out branch 'incoming' on repository '/Users/yufei/Downloads/emsdk/clang/fastcomp/src' Current repository version: "Mon, 3 Sep 2018 19:19:25 -0700 49340ac23ed3065116323699f0c44498d5f15d37" Repository 'https://github.com/kripken/emscripten-fastcomp-clang.git' already cloned to directory '/Users/yufei/Downloads/emsdk/clang/fastcomp/src/tools/clang', skipping. Fetching latest changes to the branch 'incoming' for '/Users/yufei/Downloads/emsdk/clang/fastcomp/src/tools/clang'... Already up-to-date. Successfully updated and checked out branch 'incoming' on repository '/Users/yufei/Downloads/emsdk/clang/fastcomp/src/tools/clang' Current repository version: "Mon, 3 Sep 2018 19:19:37 -0700 c0a68f4121de3f6fb2f2a503e89d1b0e5cdf68a9" Traceback (most recent call last): File "./emsdk", line 803, in xcode_sdk_version return subprocess.check_output(['xcrun', '--show-sdk-version']).strip().split('.') TypeError: a bytes-like object is required, not 'str' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "./emsdk", line 2385, in <module> sys.exit(main()) File "./emsdk", line 2368, in main success = tool.install() File "./emsdk", line 1351, in install success = tool.install() File "./emsdk", line 1361, in install success = build_llvm_tool(self) File "./emsdk", line 856, in build_llvm_tool if OSX and (not os.environ.get('LLVM_CMAKE_ARGS') or not 'HAVE_FUTIMENS' in os.environ.get('LLVM_CMAKE_ARGS')) and xcode_sdk_version() < [10,13]: File "./emsdk", line 805, in xcode_sdk_version return subprocess.checkplatform.mac_ver()[0].split('.') AttributeError: module 'subprocess' has no attribute 'checkplatform'
这个错误看起来是因为 subprocess
模块缺少 checkplatform
所致,实际上是因为 subprocess.check_output(['xcrun', '--show-sdk-version']).strip().split('.')
造成的
因为这个调用没有区分 Python2
和 Python3
,修复方法也很简单,就是将这句改成
if sys.version_info >= (3,): return subprocess.check_output(['xcrun', '--show-sdk-version']).decode('utf8').strip().split('.') else: return subprocess.check_output(['xcrun', '--show-sdk-version']).strip().split('.')
因为这个改动,然后下面还会继续报错
TypeError: '<' not supported between instances of 'str' and 'int'
需要将
xcode_sdk_version() < [10,13]
改成
xcode_sdk_version() < ['10','13']
其它情况下,如果不出错,应该就能编译通过了
目前尚无回复