我已经成功地构建了一个Python包,它使用CMake和pybind11创建了一个共享对象(.so
——假设目前只使用Linux)文件。实现工作正常,但我无法使用pip uninstall .
删除此共享对象文件
我在setup.py
文件中的setup
命令看起来像是从pybind/cmake_example存储库中获取的:
setup(
name='package',
version='0.0.1',
author='-',
author_email='-',
description='A test project using pybind11 and CMake',
long_description='',
ext_modules=[CMakeExtension('packagebindings')],
cmdclass=dict(build_ext=CMakeBuild),
zip_safe=False,
packages=setuptools.find_packages()
)
我的CMakeLists.txt
文件有一条install
指令,如下所示:
install(TARGETS packagebindings COMPONENT python LIBRARY DESTINATION ${Python_SITELIB})
总之,以下是运行pip install .
时创建的文件:
path/to/site-packages/package/*
-被pip uninstall package
删除path/to/site-packages/package-0.0.1.dist-info/*
-被pip uninstall package
删除path/to/site-packages/packagebindings.cpython-37m-x86_64-linux-gnu.so
-在{我想知道如何使运行pip uninstall .
删除.so
文件
如果需要进一步的MRE,我可以链接到存储库
您的CMake安装目标似乎将.so直接放入python安装目录(
DESTINATION ${Python_SITE_LIB}
)。我猜这会阻止.so被Python注册,所以卸载时不会删除它。我建议让CMake将.so放在分发目录中,然后将以下选项添加到setup()
:这将允许Python包管理器跟踪.so。第一个字符串是相对于安装前缀的目录。第二个字符串是发行版中相对于setup.py脚本的.so文件
相关问题 更多 >
编程相关推荐