如何让 Python 看到通过 apt 安装的模块?

Posted

技术标签:

【中文标题】如何让 Python 看到通过 apt 安装的模块?【英文标题】:How to make Python see module installed via apt? 【发布时间】:2016-01-09 12:12:43 【问题描述】:

我正在尝试使用 Travis CI 来运行我的 Python 代码测试。

我的项目需要 dbus 模块,它在 PyPi 中不可用,所以我必须通过 apt 安装它。

问题是测试失败并出现 ImportError: No module named 'dbus'。这很奇怪,因为我可以在报告中看到有关成功安装所需软件包的信息。这是我的.travis.yml 和Travis log 的示例。

我做错了吗?

【问题讨论】:

这很有趣。你知道我在怀疑什么吗?这只是一个怀疑。 Travis 正在设置一个 virtualenv,而您的 apt-get 正在安装在 virtualenv 之外。所以它永远不会看到你的包裹。 但是。如果是这样的话,我相信有一个解决方案。我用特拉维斯。让我看点东西。 :) 【参考方案1】:

根据您发布的 travis 日志,您的所有软件包都安装在虚拟环境中。

虚拟环境是在干净的状态下创建的——因此它没有任何指向系统库的链接,实际上它在documentation 中声明了这一点:

CI 环境为每个 Python 使用单独的 virtualenv 实例 版本。系统 Python 未使用且不应依赖。如果你 需要安装 Python 包,通过 pip 而不是 apt 来安装。

如果您还是决定使用 apt,请注意仅 Python 系统包 在 Ubuntu 12.04 LTS 上包含 Python 2.7 库。这意味着 从存储库安装的软件包在其他系统中不可用 virtualenvs,即使你使用了 --system-site-packages 选项。

我相信它可以解释您的问题:

    虚拟环境是隔离的,与系统包没有链接。 即使您使用 apt,它也仅限于 Python 2.7,并且您正在尝试安装 python3- 包。

【讨论】:

以上是关于如何让 Python 看到通过 apt 安装的模块?的主要内容,如果未能解决你的问题,请参考以下文章

如何让python访问ubuntu中的系统范围模块?

ubuntu16.04安装python的requests模块失败,怎么解决

编译安装python需要哪些依赖

Python内置模块(你还在pip install time?)&& apt-get install -f

在 linux 上为非默认版本安装 python 模块

python-dev如何安装 sudo apt-get install python-dev ?