1

我正在使用一个为 c++ 可执行文件提供 python 包装器的库。

我使用 venv ( https://docs.python.org/3/library/venv.html ) 安装了它 ( https://github.com/bulletphysics/bullet3 ) - 一切都很好。

我正在考虑尝试构建https://github.com/bulletphysics/bullet3

从 venv 文件夹的根目录中,我找到了 gym/lib/python3.7/site-packages/pybullet.cpython-37m-x86_64-linux-gnu.so。我猜这是最终从 python 调用的可执行文件。

从 Python 调用正确的外部二进制可执行文件涉及哪些步骤?如何import pybullet as p解决gym/lib/python3.7/site-packages/pybullet.cpython-37m-x86_64-linux-gnu.so?

这似乎接近了 c++ 世界的尽头;但我找不到正确的关键字搜索来确切了解它是如何允许使用 python 的。

谢谢

4

2 回答 2

0

简而言之:C-python 只是在 PYTHONPATH 中查找正确命名的动态库,加载此类库并使用预定义的接口来了解该库中的确切内容应作为 Python 中模块的内容可见。

在https://docs.python.org/3/extending/index.html中描述了如何准备此类共享对象及其所需内容的详细信息

所以 venv 只是将动态库放在目录中,该目录是虚拟环境的 PYTHONPATH 的一部分。

于 2020-05-19T13:25:01.577 回答
0

python 只是在 PYTHONPATH 中寻找正确命名的动态库,加载这样的库并使用预定义的接口

更多信息: https ://docs.python.org/3/extending/index.html

于 2020-05-19T13:33:41.050 回答