bazel-contrib / bazel-contrib/rules_python

Windows: `pywin32` doesn't work with the hermetic Python toolchain

未关闭
#1,356 11 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看
need: upstream support type: toolchain
主要语言
Starlark
星标
688
派生
721
平均合并
15 小时 7 分钟
30 天内合并 PR
76

描述

# 🐞 bug report

### Affected Rule

rules_python

### Is this a regression?

Probably not.

### Description

I'm trying to do `import win32api` on Windows, but got
```
ModuleNotFoundError: No module named 'win32api'
```
even if I specify `pywin32==303` in the requirements.txt file.

## 🔬 Minimal Reproduction

Fetch the reproducible case at https://github.com/meteorcloudy/my_tests/tree/master/pywin32_test

then run
```
bazel run //:bin
```

## 🔥 Exception or Error

$ bazel run //:bin
INFO: Invocation ID: 3c7000e6-65e3-4816-a2b5-551faa933a03
INFO: Reading 'startup' options from c:\users\pcloudy\.bazelrc: --output_user_root=C:/src/tmp
INFO: Options provided by the client:
Inherited 'common' options: --isatty=1 --terminal_columns=375
INFO: Options provided by the client:
Inherited 'build' options: --python_path=C:/python3/python.exe
INFO: Reading rc options for 'run' from c:\users\pcloudy\.bazelrc:
Inherited 'build' options: --curses=yes --color=yes --verbose_failures --announce_rc --disk_cache=C:/src/tmp/bazel_disk_cache
INFO: Analyzed target //:bin (40 packages loaded, 3463 targets configured).
INFO: Found 1 target...
Target //:bin up-to-date:
bazel-bin/bin.exe
bazel-bin/bin.zip
INFO: Elapsed time: 15.868s, Critical Path: 7.96s
INFO: 6 processes: 5 internal, 1 local.
INFO: Build completed successfully, 6 total actions
INFO: Running command line: bazel-bin/bin.exe
Traceback (most recent call last):
File "C:\temp\2\Bazel.runfiles_s_pq9z9_\runfiles\__main__\bin.py", line 1, in
import win32api
ModuleNotFoundError: No module named 'win32api'

## 🌍 Your Environment

**Operating System:**

  

Windows

**Output of `bazel version`:**

  

6.3.1

**Rules_python version:**

  

0.24.0

**Anything else relevant?**
If I do `import win32.win32api`, I get
```
ImportError: DLL load failed while importing win32api: The specified module could not be found.
```

贡献指南

打开贡献指南

调研方向

从链接的 pywin32_test 复现、其 requirements.txt 以及 bazel run //:bin 入口点开始;检查 rules_python 的 hermetic toolchain 如何在 Windows 上处理 pywin32。复现缺少 win32api import 和 DLL-load 错误,然后验证 sample 使用 pywin32==303 可以成功运行。

由索引模型根据 Issue 内容生成。

评估

技术栈
python
领域
build-system, tooling
Issue 类型
缺陷
难度
4/5
预计耗时
3-5 天
活跃度
停滞
描述清晰度
基本清楚
新手友好度
38/100

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。