由于
distutils
在 > 3.10 版本中从 Python 中删除,并且 setuptools 不会添加到 stdlib 中,因此我想替换现有的 setup.py
配方来构建/安装 C++ 库 Cython 扩展(即主要不是Python 包,不在 venv 中运行,等等)以及一些自定义代码。
Cython 部分工作正常,我刚刚设法通过使用
distutils
中的 config-var 信息,从 sysconfig
之前执行的 C++ 编译器构造一个等效的调用...尽管后者非常试验和错误,据我所知,没有文档或与 config-var 集合有特别的一致性。
但我现在一直在确定要在构建的目标
.so
中安装我的构建扩展 prefix
的目录。根据所使用的平台和路径方案以及前缀本身,子目录可能位于 lib
或 lib64
、某种 pythonX.Y
子目录以及最终 site-packages
、dist-packages
或其他目录。这个决定之前是由 distutils
做出的,但我找不到任何等效的代码来在其他 stdlib 包中返回此类路径决定。
有任何答案或最佳实践方法的建议吗? (除了“使用安装工具”之外,请!)
这对我有用:
from sysconfig import get_path
get_path('platlib', 'posix_user', {'userbase': '/prefix/path/'})
我在 CMakeLists.txt 中使用它,并使用
${CMAKE_INSTALL_DIR}
作为路径。