如何将 python 包安装到 GDB/clion2017.1 中的嵌入式 python

Posted

技术标签:

【中文标题】如何将 python 包安装到 GDB/clion2017.1 中的嵌入式 python【英文标题】:How to install python packages to embedded python in GDB/ clion2017.1 【发布时间】:2017-09-21 01:43:30 【问题描述】:

我正在使用 CLion 2017.1 和 GDB 进行调试。使用 python 2.7 支持编译的 GDB,但没有模块。

我希望使用matplotlib 来绘制一些调试数据(使用GDB image watch),但没有matplotlib 存在。并且没有pip 来安装它。

我尝试使用(gdb) python import get_pip 安装pip,但是

Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/home/user/temp/get_pip.py", line 28, in     <module>
    import tempfile
  File "/home/user/clion-2016.3.4/bin/gdb/lib/python2.7/tempfile.py", line 35, in <module>
    from random import Random as _Random
  File "/home/user/clion-2016.3.4/bin/gdb/lib/python2.7/random.py", line 48, in <module>
    from binascii import hexlify as _hexlify
ImportError: No module named binascii
Error while executing Python code.

所以我不知道如何将其他模块引导到 GDB 的嵌入式 python 中。

知道怎么做吗?

【问题讨论】:

尝试使用安装在您系统上的 GDB(/usr/bin/gdb 左右)而不是捆绑的。有帮助吗? python setup.py 不起作用吗? 【参考方案1】:

我尝试使用 (gdb) python import get_pip 安装 pip 但是

您不需要从 gdb shell 安装 python 模块。您可以像往常一样使用包管理器或 pip 从命令行安装它们。确保您安装了 Python2 版本的模块。安装模块后,您可以在 gdb 嵌入式 python 中使用它:

$ gdb -q
(gdb) python
>import matplotlib
>end
(gdb) 

【讨论】:

它不起作用。我有同样的问题。我用 matplotlib 安装了 python。我可以在我的 python 脚本中使用它。但不在 gdb 内部:ModuleNotFoundError: No module named 'matplotlib' 可能是 Python2/Python3 不匹配。尝试安装 Python2 和 Python3 版本的 matplotlib 模块。 我的 gdb (sys.version) 说它使用 Python 3.6.3: 3.6.3 (v3.6.3:2c5fed8, Oct 3 2017, 17:26:49) [MSC v.1900 32位(英特尔)] 我安装了 python 2 和 python 3,都安装了 matplotlib。但我的 python3 是 64 位的。也许这就是问题所在。我会安装 python 3 32bit 并告诉你。 不幸的是,它也无济于事。还是同样的错误:ModuleNotFoundError: No module named 'matplotlib' 我在 linux (Ubuntu 18.04 LTS) 上,遇到了同样的问题。

以上是关于如何将 python 包安装到 GDB/clion2017.1 中的嵌入式 python的主要内容,如果未能解决你的问题,请参考以下文章

如何将 rpm-python 绑定安装到 python3 站点包

我可以将 Python windows 包安装到 virtualenvs 中吗?

我可以将 Python windows 包安装到 virtualenvs 中吗?

使用 pip 将 Python 包安装到不同的目录中?

如何将Python包pip-install到虚拟环境中,并在普通shell中访问CLI命令

如何通过 conda 安装我自己的 python 模块(包)并观察它的变化