python – 在Openshift上使用node-gyp构建模块
发布时间:2020-12-20 13:51:20 所属栏目:Python 来源:网络整理
导读:当尝试在Openshift上构建需要node-gyp的node-canvas时,我遇到了这个错误: canvas@1.2.3 install /var/lib/.../repo/node_modules/canvas node-gyp rebuildTraceback (most recent call last): File "/opt/rh/v8314/root/usr/bin/gyp",line 15,in module imp
当尝试在Openshift上构建需要node-gyp的node-canvas时,我遇到了这个错误:
> canvas@1.2.3 install /var/lib/.../repo/node_modules/canvas > node-gyp rebuild Traceback (most recent call last): File "/opt/rh/v8314/root/usr/bin/gyp",line 15,in <module> import gyp ImportError: No module named gyp gyp ERR! configure error gyp ERR! stack Error: `gyp` failed with exit code: 1 gyp ERR! stack at ChildProcess.onCpExit (/opt/rh/nodejs010/root/usr/lib/node_modules/node-gyp/lib/configure.js:343:16) gyp ERR! stack at ChildProcess.emit (events.js:98:17) gyp ERR! stack at Process.ChildProcess._handle.onexit (child_process.js:820:12) gyp ERR! System Linux 2.6.32-504.16.2.el6.x86_64 gyp ERR! command "node" "/opt/rh/nodejs010/root/usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild" gyp ERR! cwd /var/lib/.../repo/node_modules/canvas gyp ERR! node -v v0.10.35 gyp ERR! node-gyp -v v1.0.2 gyp ERR! not ok npm ERR! canvas@1.2.3 install: `node-gyp rebuild` npm ERR! Exit status 1 npm ERR! npm ERR! Failed at the canvas@1.2.3 install script. npm ERR! This is most likely a problem with the canvas package,npm ERR! not with npm itself. npm ERR! Tell the author that this fails on your system: npm ERR! node-gyp rebuild npm ERR! You can get their info via: npm ERR! npm owner ls canvas npm ERR! There is likely additional logging output above. npm ERR! System Linux 2.6.32-504.16.2.el6.x86_64 npm ERR! command "node" "/opt/rh/nodejs010/root/usr/bin/npm" "install" "node-canvas-1.2.3" npm ERR! cwd /var/lib/.../app-root/runtime/repo npm ERR! node -v v0.10.35 npm ERR! npm -v 1.4.28 npm ERR! code ELIFECYCLE npm ERR! not ok code 0 我的理解是node-gyp正在导入未找到的gyp python模块.几周前我通过在我的node_modules目录(/var/lib/…/repo/node_modules/node-gyp/gyp/pylib)中将PYTHONPATH env变量设置为gyp python模块来解决了这个问题.这样构建成功完成,我可以使用node-canvas模块.现在我怀疑Openshift发生了一些变化,这种技术不再适用了.即使设置了PYTHONPATH,当我安装模块时仍然无法找到gyp模块.知道为什么即使将PYTHONPATH设置为包含模块的位置,也无法找到gyp模块?也许它被忽略了? gyp文件包含: import sys # TODO(mark): sys.path manipulation is some temporary testing stuff. try: import gyp except ImportError,e: import os.path sys.path.append(os.path.join(os.path.dirname(sys.argv[0]),'pylib')) import gyp if __name__ == '__main__': sys.exit(gyp.main(sys.argv[1:])) 看不出PYTHONPATH未被使用的原因(并且无法检查gyp文件中的PYTHONPATH值,因为它需要root权限,我认为我在Openshift上没有这个权限).也许npm以某种方式重置env? 解决方法
我通过直接调用node-gyp而不是通过npm install来解决:
node-gyp configure node-gyp build node-gyp install (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |