以编程方式获取前缀中的Python安装路径,无需distutils

问题描述 投票:0回答:1

由于

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 包中返回此类路径决定。

有任何答案或最佳实践方法的建议吗? (除了“使用安装工具”之外,请!)

python installation distutils python-packaging python-extensions
1个回答
0
投票

这对我有用:

from sysconfig import get_path
get_path('platlib', 'posix_user', {'userbase': '/prefix/path/'})

我在 CMakeLists.txt 中使用它,并使用

${CMAKE_INSTALL_DIR}
作为路径。

© www.soinside.com 2019 - 2024. All rights reserved.