这是昨天晚上发生的事情,已经记不清一些细节了,但崩溃的心情到现在还犹在心头......还记得当时做完后大脑一片空白心力交瘁的感觉。
大致经过是需要编译一个前端,所以就是 npm && gulp && bower install
开始按照说明配置。中间经历了很多小问题(配置过前端的同学应该都懂😭,就是不痛不痒但很 tricky 占用时间,当时心态已经有点不太好),之后遇到了这个 Bug:
File "<String>" line1
import sys;print "%s.%s.%s" % sys.version_info[:3];
SyntaxError invalid syntax
看的时候心里大约是 WTF,因为知道有 js 有需要配置 C++ 的,有需要下载 dev-tool 的,但需要 Python 来支持运行还是少见。Python 2/3 著名区别是 print 在 Python2 是一个 statement,可以直接输出其他元素;而 print 在 Python3 是一个 function,必须要用 print() 来输出。所以这行语句就仅适合 Python2,而在 Python3 中无法使用。
然后看 StackTrace,发现对应的项目是有 4.6k+ star 的项目 node-gyp。所以就找到对应的 commit,发现来自于一个对应的 PR-1504,具体的修改信息是在 这里,原来的语句是 var args = ['-c', 'import platform; print(platform.python_version());']
, 适用于 2 和 3 版本,修改后才变成了 var args = ['-c', 'import sys; print "%s.%s.%s" % sys.version_info[:3];']
。
在那条 PR 里可以看到有人在 8 月份的时候已经发现了这个问题并提出了修复, [ this broke python3, i created a PR with a small fix here #1534 ] ,官方回应是说还需要一段时间来进行修复 [ so it might take some time for this to get to the public.] 。
这件事真的证明了单测的重要性,真的很多看起来没有问题的修改不知不觉就会改变程序的运行方式啊 !
1.后续是直接下了一个 python2.7 后 config --path 临时指定了一个版本,但发现还是有问题,就直接放弃构建项目了,直接睡觉......
2.node-gyp 项目对 Python 的 官方支持版本说明 说明很模糊,不知道 recommened 对应的反面是完全不能支持还是可以运行但效果不好
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.