python - 如何解决使用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
生成了一个文件。
有谁知道如何解决这样的问题?
解决方案
检查你的 pip 版本。我遇到了同样的错误(在使用 pip 在开发模式下安装其他东西时)并且降级到 pip 版本 20.0.2 有效。不知道为什么,但我在互联网上看到其他人同样解决了这个问题。