下面是出现的报错× Building wheel for SharedArray (pyproject.toml) did not run successfully. │ exit code: 1 ╰─> [9 lines of output] running bdist_wheel running build running build_ext building 'SharedArray' extension creating build\temp.win-amd64-cpython-38\Release\src "D:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.43.34808\bin\HostX86\x64\cl.exe" /c /nologo /O2 /W3 /GL /DNDEBUG /MD -IC:\Users\LinRongqing\AppData\Local\Temp\pip-build-env-6gok3aov\overlay\Lib\site-packages\numpy\core\include -ID:\anaconda3\envs\ pytorch\include -ID:\anaconda3\envs\pytorch\Include "-ID:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.43.34808 \include" "-ID:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Auxiliary\VS\include" "-IC:\Program Files (x86)\Windows Kits\10\ include\10.0.26100.0\ucrt" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.26100.0\\um" "-IC:\Program Files (x86)\Windows Kits\10\\incl ude\10.0.26100.0\\shared" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.26100.0\\winrt" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.26100.0\\cppwinrt" /Tc.\src\map_owner.c /Fobuild\temp.win-amd64-cpython-38\Release\.\src\map_owner.obj map_owner.c .\src\map_owner.c(19): fatal error C1083: 无法打开包括文件: “sys/mman.h”: No such file or directory error: command 'D:\\Program Files (x86)\\Microsoft Visual Studio\\2022\\BuildTools\\VC\\Tools\\MSVC\\14.43.34808\\bin\\HostX86\\x64\\cl.exe' failed with exit code 2 [end of output] note: This error originates from a subprocess, and is likely not a problem with pip. ERROR: Failed building wheel for SharedArray Failed to build SharedArray ERROR: Could not build wheels for SharedArray, which is required to install pyproject.toml-based projects
时间: 2025-06-18 20:21:12 浏览: 61
<think>好的,用户的问题是关于在Windows上安装SharedArray时遇到的编译错误,具体是因为缺少sys/mman.h头文件。我需要仔细分析这个问题并提供解决方案。
首先,sys/mman.h是Unix/Linux系统特有的头文件,Windows上没有这个文件。SharedArray包原本是为这些系统设计的,所以在Windows上编译时会报错。用户提到现在openPCDet已经基本不调用SharedArray的方法,所以可能可以绕过这个依赖,但用户还是想安装它。
根据用户提供的参考链接,有一个修改版的SharedArray for Windows,由imaginary-friend94维护。用户需要安装这个修改版本。但安装过程中需要做一些调整,比如修改setup.py中的名称,将winsharedarray改为SharedArray,以及修改扩展模块的名称和相关方法。
我需要分步骤指导用户如何操作。首先,克隆仓库,然后修改setup.py中的内容,确保名称正确。接着,可能需要修改C++文件中的方法名称,以保持兼容性。最后,安装修改后的包。
另外,用户可能需要安装Visual Studio Build Tools来支持编译,因为Windows下编译C++扩展需要这些工具。还要注意Python版本和架构是否匹配,比如32位和64位的问题。
需要提醒用户仔细检查所有修改的地方,确保名称一致,避免因为拼写错误导致安装失败。如果用户不熟悉C++修改,可能会遇到困难,所以步骤要尽量详细。
总结解决方案步骤:安装依赖工具,下载修改版仓库,修改配置文件,编译安装,验证安装。同时,提供备选方案,比如使用Linux子系统或贡献代码,但主推修改版SharedArray的安装方法。</think>在Windows上安装SharedArray时因缺少$sys/mman.h$导致的编译失败,可通过以下步骤解决:
### 解决方案步骤
1. **安装前置工具**
- 安装[Visual Studio Build Tools](https://visualstudio.microsoft.com/zh-hans/visual-cpp-build-tools/),勾选"C++桌面开发工具"
- 安装Python开发依赖:`pip install wheel setuptools`
2. **获取修改版SharedArray**
```bash
git clone https://github.com/imaginary-friend94/Shared-Array-for-Windows
cd Shared-Array-for-Windows
```
3. **修改配置文件**
- 编辑`setup.py`:
1. 将`name='winsharedarray'`改为`name='SharedArray'`
2. 修改扩展模块定义:
```python
Extension('SharedArray', # 原为'winsharedarray'
sources=['./src/winsharedarraymodule.cpp'],
include_dirs=['./src'],
libraries=['Kernel32'],
define_macros=[('WIN32', None)])
```
4. **修改源码兼容性**
- 编辑`src/winsharedarraymodule.cpp`:
```cpp
// 修改所有方法前缀:win_shared_array_ -> shared_array_
static PyMethodDef SharedArrayMethods[] = {
{"shared_array_create", ...}, // 原为win_shared_array_create
{"shared_array_open", ...},
{NULL, NULL}
};
```
5. **安装修改后的包**
```bash
python setup.py install
```
6. **验证安装**
```python
import SharedArray # 应无报错
```
### 关键修改说明
- 通过替换$sys/mman.h$的POSIX内存映射API,改用Windows的`CreateFileMapping`/`MapViewOfFile`等系统调用[^1]
- 保持Python层接口名称不变,仅修改底层实现
- 依赖Windows内核库$Kernel32.lib$替代Linux的$libc$
### 注意事项
1. 确保Python架构(x86/x64)与系统一致
2. 若编译报`LNK2001`错误,检查是否遗漏`Kernel32`库链接
3. 使用Python 3.6+版本
阅读全文
相关推荐




















