如何让 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 安装的模块?的主要内容,如果未能解决你的问题,请参考以下文章
ubuntu16.04安装python的requests模块失败,怎么解决