【发布时间】:2021-02-02 15:27:49
【问题描述】:
我已经成功构建了一个 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 package之后仍然存在
我想知道如何使运行pip uninstall . 删除.so 文件。
如果需要进一步的 MRE,我可以链接到存储库。
【问题讨论】:
-
我认为您的 CMake 安装目标将 .so 直接放在 python 安装目录中是否正确?这可以解释它没有被移除的原因。
-
这就是我正在做的事情——我想我希望目标目录位于
${CMAKE_BINARY_DIRECTORY}或类似的地方
标签: python c++ cmake pip pybind11