【问题标题】:After `npm install` an error about a syntax error in python appears?`npm install` 后出现关于 python 语法错误的错误?
【发布时间】:2019-06-01 05:38:36
【问题描述】:

我正在尝试为 Exokit 安装必要的依赖项,但我收到与 Python 语法错误有关的错误。

这是我想尝试在浏览器中涉及 VR 的新事物。我已经从他们的 github 重新克隆了存储库,并直接从他们的网站下载。我按照给 T 的说明操作(只有 4 个,哈哈)。

I have not yet touched the code and this is the error that I am getting.

Austin@DESKTOP-UD2R1O4 MINGW64 ~/exokit (master)
$ npm install

> raw-buffer@0.0.19 install C:\Users\Austin\exokit\node_modules\raw-buffer
> node-gyp rebuild


C:\Users\Austin\exokit\node_modules\raw-buffer>if not defined 
npm_config_node_gyp (node "C:\Program 
Files\nodejs\node_modules\npm\node_modules\npm-lifecycle\node-gyp- 
bin\\..\..\node_modules\node-gyp\bin\node-gyp.js" rebuild )  else (node 
"C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\bin\node-gyp.js" rebuild )
gyp ERR! configure error
gyp ERR! stack Error: Command failed: C:\Users\Austin\Anaconda3\python.EXE -c import sys; print "%s.%s.%s" % sys.version_info[:3];
gyp ERR! stack   File "<string>", line 1
gyp ERR! stack     import sys; print "%s.%s.%s" % sys.version_info[:3];
gyp ERR! stack                                ^
gyp ERR! stack SyntaxError: invalid syntax
gyp ERR! stack
gyp ERR! stack     at ChildProcess.exithandler (child_process.js:276:12)
gyp ERR! stack     at emitTwo (events.js:126:13)
gyp ERR! stack     at ChildProcess.emit (events.js:214:7)
gyp ERR! stack     at maybeClose (internal/child_process.js:915:16)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:209:5)
gyp ERR! System Windows_NT 10.0.17134
gyp ERR! command "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\node_modules\\node-gyp\\bin\\node-gyp.js" "rebuild"
gyp ERR! cwd C:\Users\Austin\exokit\node_modules\raw-buffer
gyp ERR! node -v v8.12.0
gyp ERR! node-gyp -v v3.8.0
gyp ERR! not ok
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.4 (node_modules\fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.4: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"})

npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! raw-buffer@0.0.19 install: `node-gyp rebuild`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the raw-buffer@0.0.19 install script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     C:\Users\Austin\AppData\Roaming\npm-cache\_logs\2019-01-06T06_55_37_752Z-debug.log

【问题讨论】:

  • 你的机器上安装了python吗?

标签: javascript node.js npm-install


【解决方案1】:

在 cmd 管理员(或 Windows Powershell 管理员,如果 cmd 冻结)中尝试此操作

npm install --global windows-build-tools

【讨论】:

  • 这似乎奏效了!谢谢,我永远不会找到这个!
  • 似乎它想要 Python 2.7 而不是 3.6。
  • 遇到了同样的问题,但是我的系统在 Visual Studio 构建工具安装期间挂起(在成功安装 python 2.7 时冻结 - 它会安装其他任何东西吗?它不会让我返回命令提示符)。在命令提示符下键入 python 并不起作用,我应该在哪里寻找它?
  • 我还需要在windows的环境路径中设置python可执行路径。
  • @KieranF。在下面的回答中,我展示了如何使用 python 路径安装构建工具,并说明了安装后可以在哪里找到 python 可执行文件。
【解决方案2】:

如果提供的答案对您不起作用,您可以遵循以下提示,以缓解 Windows 操作系统的相关问题。

注意:如果您已经尝试通过 npm 命令安装构建工具但没有成功,那么在应用以下任何提示之前删除所有内容可能是个好主意。

你可以在这里找到构建工具,然后删除文件夹(但我不知道它们是否安装在其他地方):

  • C:\Users\'yourUser'\.windows-build-tools\
  • C:\Users\'yourUser'\AppData\Roaming\npm\node_modules\windows-build-tools

确保上面指定的文件夹被删除后,您可以尝试应用以下任何提示。

第一个提示

  • 以管理员身份运行 CMD 或 PowerShell
  • 使用以下命令安装 node-gyp:npm install -g node-gyp
  • 从此链接手动下载并安装 Windows 构建工具:Windows_Build_tools
  • 下载并安装 Python 2.7
  • 使用以下命令将 Microsoft Visual Studio 版本注册到 npm:npm config set msvs_version &lt;your msvs_version e.g. 2017&gt;
  • 使用以下命令将python可执行文件的路径注册到npm:npm config set python &lt;the path to python executable file&gt;

第二个提示(推荐)

  • 以管理员身份运行 CMD 或 PowerShell
  • 使用以下命令直接使用 python-path 安装 windows-build-tools:npm --add-python-to-path='true' install --global --production windows-build-tools
  • 您可以运行以下命令:npm config set python &lt;the path to python executable file&gt;,以确保 npm 指向 python 可执行文件的正确路径。
    为了使用这个命令,你可以在这里找到python路径(即在上一步运行命令之后):C:\Users\&lt;your_user_name&gt;\.windows-build-tools\python27

关于node-gyp的更多信息或描述可以在这里找到:node-gyp

可以在以下链接中找到有关可能的 Windows 构建工具问题的更多信息: https://github.com/felixrieseberg/windows-build-tools/issues/47
https://github.com/felixrieseberg/windows-build-tools/issues/56

附加说明:有些人倾向于在他们的项目路径名中包含空格,而有些工具不能很好地处理路径名中的空格。您可以在此处获取更多信息:https://github.com/nodejs/node-gyp/issues/809

希望这能解决您的问题。

【讨论】:

  • npm --add-python-to-path='true' install --global --production windows-build-tools 解决了我的问题。谢谢!
  • Windows_Build_tools 手动安装的链接当前返回 404 Not Found。推荐第二个技巧,也许把它作为第一个技巧(第二个技巧对我有用)?
  • 好的,谢谢你告诉我。我已经更新了您可以下载 Microsoft Build Tools 的链接。另外,第二个技巧是推荐的,所以我希望人们首先尝试。
  • 通过链接安装 Windows Build Tools 后,打开 Visual Studio Installer 检查安装是否成功。在我的情况下,有一条消息说“安装完成并出现警告”。要解决此问题,只需按“更新”按钮。
【解决方案3】:

如果您已经安装了较新的 Python 版本,则无需卸载它。您可以安装较旧的 Python 2.7 版本并遵循this answer 中的建议。

【讨论】:

  • windows 构建工具自述文件说 windows 构建工具随 npm 的最新版本一起提供。我在我的系统中找到了它,只需要像@mdowes 所说的那样将它添加到路径中
【解决方案4】:

在执行 python 代码时任何指向语法错误的错误都是由于执行 python 脚本文件的 python(python v3 或 v2)可执行文件的版本。在这种情况下,npm 正在尝试构建少量节点模块,因为这些模块的二进制文件未在 Internet 上发布。因此,当加载错误版本的 python 编译器(或某些人所说的解释器)并用于构建 python 代码时,您将看到语法错误。

解决此类问题的方法是不要卸载 python,因为您可能需要两个版本的 python 用于不同的目的。只需在 python v3 之前添加 python v2 路径,或者如果你没有 python 然后安装 python v2 并将位置添加到环境变量,如下所示。希望这能解决问题。

【讨论】:

  • 这对我来说是最直接最正确的答案。
【解决方案5】:

Node.js 是用 GYP 构建的——用 Python 编写的跨平台构建工具。还有一些其他的构建步骤是在 Python 中实现的。因此,从源代码构建节点需要 Python。

但您还需要 Python 来构建原生插件。

【讨论】:

    【解决方案6】:

    我通过重新安装 NPM 版本 11 并确保在它询问您是否要安装其他工具(与 Microsoft Visual Studio 构建工具相关的东西)时选中该复选框而成功。然后我可以运行 npm install 然后 `npm 。 “http://webvrwebsite.com”成功。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-05-25
      • 2014-12-17
      • 2019-04-20
      • 2022-01-21
      • 1970-01-01
      • 2020-02-20
      • 2021-12-18
      相关资源
      最近更新 更多