Tan Shuai

Electron 构建工具 ERROR Error: Failed to run "choco install pywin32 --yes"

软件开发

当使用 Electron Build Tools 时,您可能会遇到通过 Chocolatey 安装 pywin32 相关的错误。这可能会令人沮丧,特别是当它是您项目所需的依赖项时。以下是问题的详细解释和可能的解决步骤。

错误

在使用 Electron Build Tools 初始化一个 Electron 项目时,您可能会看到以下错误信息:

E:\\>e init main-testing -i testing --root=e:/src/electron
WARN A fixable error has occurred
--> A required dependency "pywin32" could not be located, it probably has to be installed.
Do you want build-tools to try fix this for you? [y/n]: y

Running "choco install pywin32 --yes"
ERROR Error: Failed to run "choco install pywin32 --yes"
    at spawnSyncWithLog (C:\\Users\\zeeis\\.electron_build_tools\\src\\utils\\deps-check.js:11:11)
    at fix (C:\\Users\\zeeis\\.electron_build_tools\\src\\utils\\deps-check.js:39:9)
    at maybeAutoFix (C:\\Users\\zeeis\\.electron_build_tools\\src\\utils\\maybe-auto-fix.js:13:3)
    at whichAndFix (C:\\Users\\zeeis\\.electron_build_tools\\src\\utils\\which.js:10:5)
    at checkPlatformDependencies (C:\\Users\\zeeis\\.electron_build_tools\\src\\utils\\deps-check.js:61:7)
    at Object.<anonymous> (C:\\Users\\zeeis\\.electron_build_tools\\src\\e-init.js:165:3)
    at Module._compile (internal/modules/cjs/loader.js:1072:14)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1101:10)
    at Module.load (internal/modules/cjs/loader.js:937:32)
    at Function.Module._load (internal/modules/cjs/loader.js:778:12)

此错误通常是由于 pywin32 包的安装脚本无法在远程服务器上找到所需的文件。这会导致 404 错误,表示在指定的 URL 上找不到文件。

理解错误

错误信息的关键部分是:

ERROR: The remote file either doesn't exist, is unauthorized, or is forbidden for url 'http://sourceforge.net/projects/pywin32/files/pywin32/Build%20219/pywin32-219.win-amd64-py3.9.exe/download'. Exception calling "GetResponse" with "0" argument(s): "The remote server returned an error: (404) Not Found."

这表明 pywin32 的下载 URL 不再有效,这意味着 Chocolatey 无法检索到必要的安装文件。

### 排查步骤

以下是一些解决该问题的步骤:

#### 1. 验证 Chocolatey 安装

确保 Chocolatey 已正确安装并更新至最新版本。您可以使用以下命令检查 Chocolatey 版本:

```bash
choco --version

要更新 Chocolatey,请使用:

choco upgrade chocolatey

2. 手动安装 pywin32

由于自动安装失败,尝试手动安装 pywin32。您可以从官方 pywin32 GitHub 发布页面下载相应版本并手动安装。

3. 修改安装脚本

如果您可以控制 Electron Build Tools 脚本,您可以修改它以指向 pywin32 的有效 URL 或处理手动安装过程。

4. 使用替代的包管理器

如果 Chocolatey 继续失败,考虑使用其他包管理器,例如用于 Python 包的 pip:

pip install pywin32

手动安装 pywin32 示例

  1. 官方 GitHub 发布页面下载相应的 pywin32 安装程序。
  2. 运行安装程序并按照安装说明进行操作。
  3. 通过运行一个导入 pywin32 的简单 Python 脚本来验证安装:
import win32api
print(win32api.GetVersionEx())

遇到“Failed to run choco install pywin32 --yes”错误可能会成为您开发过程中的一个障碍。然而,通过了解根本原因并按照上述步骤操作,您可以克服此问题,继续进行 Electron 项目设置。