我用的命令就是pip install . 但报错Processing /home/luli/DH-PTAM-master/pangolin Preparing metadata (setup.py) ... done Building wheels for collected packages: pangolin Building wheel for pangolin (setup.py) ... error error: subprocess-exited-with-error × python setup.py bdist_wheel did not run successfully. │ exit code: 1 ╰─> [41 lines of output] running bdist_wheel running build running build_py /home/luli/anaconda3/envs/dhptam/lib/python3.8/site-packages/setuptools/_distutils/cmd.py:66: SetuptoolsDeprecationWarning: setup.py install is deprecated. !! ******************************************************************************** Please avoid running ``setup.py`` directly. Instead, use pypa/build, pypa/installer or other standards-based tools. See https://blog.ganssle.io/articles/2021/10/setup-py-deprecated.html for details. ******************************************************************************** !! self.initialize_options() installing to build/bdist.linux-x86_64/wheel running install copying ./pangolin.cpython-38-x86_64-linux-gnu.so -> / Traceback (most recent call last): File "<string>", line 2, in <module> File "<pip-setuptools-caller>", line 34, in <module> File "/home/luli/DH-PTAM-master/pangolin/setup.py", line 32, in <module> setup( File "/home/luli/anaconda3/envs/dhptam/lib/python3.8/site-packages/setuptools/__init__.py", line 117, in setup return distutils.core.setup(**attrs) File "/home/luli/anaconda3/envs/dhptam/lib/python3.8/site-packages/setuptools/_distutils/core.py", line 183, in setup return run_commands(dist) File "/home/luli/anaconda3/envs/dhptam/lib/python3.8/site-packages/setuptools/_distutils/core.py", line 199, in run_commands dist.run_commands() File "/home/luli/anaconda3/envs/dhptam/lib/python3.8/site-packages/setuptools/_distutils/dist.py", line 954, in run_commands self.run_command(cmd) File "/home/luli/anaconda3/envs/dhptam/lib/python3.8/site-packages/setuptools/dist.py", line 999, in run_command super().run_command(command) File "/home/luli/anaconda3/envs/dhptam/lib/python3.8/site-packages/setuptools/_distutils/dist.py", line 973, in run_command cmd_obj.run() File "/home/luli/anaconda3/envs/dhptam/lib/python3.8/site-packages/setuptools/command/bdist_wheel.py", line 461, in run self.egg2dist(self.egginfo_dir, distinfo_dir) File "/home/luli/anaconda3/envs/dhptam/lib/python3.8/site-packages/setuptools/command/bdist_wheel.py", line 590, in egg2dist raise ValueError(err) ValueError: Egg metadata expected at build/bdist.linux-x86_64/wheel/./pangolin-0.0.1-py3.8.egg-info but not found [end of output] note: This error originates from a subprocess, and is likely not a problem with pip. ERROR: Failed building wheel for pangolin Running setup.py clean for pangolin Failed to build pangolin ERROR: Failed to build installable wheels for some pyproject.toml based projects (pangolin)
时间: 2025-05-28 20:45:15 浏览: 39
### 解决 `setup.py bdist_wheel` 错误问题
在 Linux 上使用 Python 3.8 和 `pip install .` 命令安装 Pangolin 时,如果遇到 `bdist_wheel` 的错误以及 `SetuptoolsDeprecationWarning` 警告,这通常是因为以下几个原因:
1. **Python 版本兼容性**:某些旧版本的 setuptools 或 wheel 可能不完全支持较新的 Python 版本(如 Python 3.8)。因此需要更新这些工具到最新版本[^1]。
2. **CMake 配置失败**:Pangolin 是一个 C++ 库,在构建过程中会调用 CMake 来编译其核心组件。如果 CMake 找不到必要的依赖项(例如 Eigen3),则可能导致构建失败[^2]。
3. **缺少头文件或库路径配置**:如果系统中未正确安装所需的开发包(例如 Boost、GLEW、Eigen3 等),或者它们的路径未被正确识别,则可能会引发类似的错误[^4]。
以下是解决问题的具体方法:
#### 更新 setuptools 和 wheel 工具
确保系统的 setuptools 和 wheel 是最新的版本,可以通过以下命令完成升级:
```bash
pip install --upgrade setuptools wheel
```
此操作可以消除可能存在的 `SetuptoolsDeprecationWarning` 提示,并提高与现代 Python 版本的兼容性[^1]。
#### 检查并修复 CMake 配置中的缺失依赖项
根据引用内容可知,Pangolin 构建过程依赖于多个外部库,其中包括但不限于 GLEW、Boost 和 Eigen3。如果这些依赖项未正确安装或找不到对应的头文件和库文件,则会导致构建失败。具体解决方案如下:
- 安装 GLEW 开发包:
```bash
sudo apt-get install libglew-dev
```
- 安装 Boost 开发包及其子模块(如 filesystem):
```bash
sudo apt-get install libboost-all-dev
```
- 安装 Eigen3 头文件:
```bash
sudo apt-get install libeigen3-dev
```
通过以上命令可确保所有必需的依赖项均已就绪。此外,还可以验证这些库的实际位置是否存在,例如使用 `locate eigen3` 或 `locate boost_filesystem` 查找相关文件的位置[^4]。
#### 修改 setup.py 中的环境变量设置
有时即使已安装所需依赖项,仍可能出现无法定位的情况。此时可以在运行 `setup.py` 之前手动指定一些环境变量来帮助程序找到正确的路径。例如:
```bash
export CMAKE_PREFIX_PATH=/path/to/eigen:/path/to/boost:$CMAKE_PREFIX_PATH
python setup.py install
```
此处 `/path/to/eigen` 和 `/path/to/boost` 替换为实际安装目录。
#### 使用替代方式重新构建 Pangolin
如果上述方法仍然未能成功解决该问题,考虑按照官方文档推荐的方式单独克隆仓库并执行本地构建流程[^3]:
```bash
git clone https://github.com/stevenlovegrove/Pangolin.git
cd Pangolin
mkdir build && cd build
cmake ..
make -j$(nproc)
sudo make install
```
完成后再次尝试通过 pip 进行安装即可。
---
### 总结
综上所述,要彻底解决 `setup.py bdist_wheel` 出现的问题需依次排查以下几点:
1. 升级 setuptools 和 wheel;
2. 补齐所有必要依赖项;
3. 设置合适的环境变量引导查找资源;
4. 若依旧存在问题,则采用独立构建后再试一次。
---
阅读全文