【问题标题】:How does python venv manage C++ dependenciespython venv如何管理C++依赖
【发布时间】:2020-09-05 05:12:28
【问题描述】:

我正在使用一个库,它为 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 的。

谢谢

【问题讨论】:

标签: python c++ binding python-venv


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 看起来像是从我的答案中直接复制粘贴。 @brent 您是否深思熟虑地选择了这个答案作为接受的答案?
    猜你喜欢
    • 1970-01-01
    • 2019-10-11
    • 2010-11-08
    • 2013-12-16
    • 2022-12-05
    • 2015-04-18
    • 1970-01-01
    • 1970-01-01
    • 2013-07-07
    相关资源
    最近更新 更多