首页 > 解决方案 > 如何解决使用setuptools从pytorch的cpp扩展获取python文件失败的问题?

问题描述

我想尝试一个名为deformable kernels的 github 项目,并按照README.md文件中描述的步骤进行操作:

conda env create -f environment.yml
 
cd deformable_kernels/ops/deform_kernel;
pip install -e .;

的结构deformable_kernel/ops/deform_kernel如下所示:

.
csrc
    filter_sample_depthwise_cuda.cpp
    filter_sample_depthwise_cuda.h
    filter_sample_depthwise_cuda_kernel.cu
    nd_linear_sample_cuda.cpp
    nd_linear_sample_cuda.h
    nd_linear_sample_cuda_kernel.cu
functions
    filter_sample_depthwise.py
    __init__.py
    nd_linear_sample.py
__init__.py
modules
    filter_sample_depthwise.py
    __init__.py
setup.py

文件的内容setup.py显示在这里:

from setuptools import setup
from torch.utils.cpp_extension import BuildExtension, CUDAExtension
 
setup(
    name='filter_sample_depthwise',
    ext_modules=[
        CUDAExtension(
            'filter_sample_depthwise_cuda',
            [
                'csrc/filter_sample_depthwise_cuda.cpp',
                'csrc/filter_sample_depthwise_cuda_kernel.cu',
            ]
        ),
    ],
    cmdclass={'build_ext': BuildExtension}
)
 
setup(
    name="nd_linear_sample",
    ext_modules=[
        CUDAExtension(
            "nd_linear_sample_cuda",
            [
                "csrc/nd_linear_sample_cuda.cpp",
                "csrc/nd_linear_sample_cuda_kernel.cu",
            ],
        )
    ],
    cmdclass={"build_ext": BuildExtension},
)

当我使用命令安装此目录时pip install -e .,它失败了,结果是:

Obtaining file:///home/xxx/Downloads/deformable_kernels/deformable_kernels/ops/deform_kernel
ERROR: More than one .egg-info directory found in /tmp/pip-pip-egg-info-pta6z__q

所以我试图将 2 setup()s 分开在不同的setup.py文件中。它有效,但我没有得到 python 文件。而是.so生成了一个文件。

有谁知道如何解决这样的问题?

标签: pythonpytorchsetuptools

解决方案


检查你的 pip 版本。我遇到了同样的错误(在使用 pip 在开发模式下安装其他东西时)并且降级到 pip 版本 20.0.2 有效。不知道为什么,但我在互联网上看到其他人同样解决了这个问题。


推荐阅读