相关疑难解决方法(0)

如何从 Python 内部获取 Python 库的路径

初始情况:

我有一个 C/C++ 库并为不同的目标语言提供绑定。其中一种语言是 Python。我决定使用 Swig,因为它为许多语言提供了良好的支持,并且它与 CMake 的集成非常简单。

为了提高 Python 绑定及其安装的可用性,我想提供一个 setup.py。这个想法是从 setup.py 文件中运行 CMake,因为 CMake 包含如何正确创建绑定的所有逻辑。

我目前得到的:

我能够运行 CMake 并从 setup.py 中构建 Python 绑定的目标。

根据 Swig 的设计,CMake 文件需要区分 Python 2 和 Python 3。在运行 CMake 时,它​​会检测 Python 安装的位置并配置环境。如果用户同时安装了 Python 2 和 Python 3(及其开发包),CMake 始终采用 Python 3。

根据:https : //cmake.org/cmake/help/v3.0/module/FindPythonLibs.html 可以通过设置 PYTHON_LIBRARY 和 PYTHON_INCLUDE_DIR 来指定实际使用的 Python 版本。例如我必须运行:

cmake -DPYTHON_INCLUDE_DIR=/usr/include/python2.7 -DPYTHON_LIBRARY=/usr/lib/x86_64-linux-gnu/libpython2.7.so
Run Code Online (Sandbox Code Playgroud)

问题是什么:

如果用户执行:

python setup.py build
Run Code Online (Sandbox Code Playgroud)

可执行文件“python”的 Python 版本可能是 2,但 CMake 使用版本 3 构建绑定(见上文)。

根据从 python 中查找 python 头路径?我可以使用以下方法获取头文件的位置: …

python swig distutils

5
推荐指数
2
解决办法
1899
查看次数

获取Python的LIB路径

我看到那INCLUDE条路是sysconfig.get_path('include')

但我看不到有任何类似的价值LIB

NumPy 直接os.path.join(sys.prefix, "libs")Windows中那样对其进行硬编码,否则(在Windows中get_config_var('LIBDIR')没有记录和丢失)。

还有更多受支持的方法吗?

python python-c-api compiler-options

5
推荐指数
1
解决办法
619
查看次数

标签 统计

python ×2

compiler-options ×1

distutils ×1

python-c-api ×1

swig ×1