当前位置: 首页 > 面试题库 >

如何使用python-apt API安装软件包

陆高峰
2023-03-14
问题内容

关于Python我是一个新手,因此我先乞求:)。就是说,我正在尝试制作一个脚本,其中包括安装一些Linux软件包。首先,我尝试按照此处说明使用subopen
。虽然这最终可以起作用,但我偶然发现了python-apt API,并且由于我不是狂热者或不愿意重新发明轮子,所以我决定尝试一下。

尝试查找有关使用python-
apt安装软件包的示例/教程时,问题来了。搜索文档后,我发现PackageManager类具有一些用于安装软件包的方法。我尝试了一些简单的代码来使其工作:

apt_pkg.PackageManager.install("python")

这似乎不太容易工作,安装方法需要apt_pkg.PackageManager而不是纯字符串。因此,再看一点,我发现这个例子看起来很有希望,但由于我不太了解那里发生的事情,所以我有点不愿意使用。

然后,是否有人尝试使用python-apt安装软件包,还是应该使用纯老式的subopen样式?

谢谢!


问题答案:

建议使用Debian软件包中的apt模块python-apt。这是底层C / C ++libapt- xxx库的高级包装,并具有Pythonic接口。

这是将安装libjs-yui-doc软件包的示例脚本:

#!/usr/bin/env python
# aptinstall.py

import apt
import sys

pkg_name = "libjs-yui-doc"

cache = apt.cache.Cache()
cache.update()
cache.open()

pkg = cache[pkg_name]
if pkg.is_installed:
    print "{pkg_name} already installed".format(pkg_name=pkg_name)
else:
    pkg.mark_install()

    try:
        cache.commit()
    except Exception, arg:
        print >> sys.stderr, "Sorry, package installation failed [{err}]".format(err=str(arg))

与使用一样apt-get,它必须以超级用户特权运行才能访问和修改APT缓存。

$ sudo ./aptinstall.py

如果您尝试将软件包安装作为较大脚本的一部分,则最好仅在最短的时间内获得root特权,这是一个好主意。

您可以在/usr/share/pyshared/apt/progress/gtk2.py:_test()函数中找到一个小示例,该示例说明如何使用GTK前端安装软件包。



 类似资料:
  • 问题内容: 您可以简单地从python安装中删除目录,还是必须删除任何残留文件? 问题答案: 它取决于您传递给的选项以及系统/软件包中distutils配置文件的内容。我不相信会以这些方式在指定目录之外修改任何文件。 值得注意的是,distutils目前没有卸载命令。 还值得注意的是,删除程序包/鸡蛋可能会导致依赖关系问题,例如尝试减轻此类问题的实用程序。

  • 问题内容: 从pypi下载python软件包及其依赖项以便在另一台计算机上脱机安装的最佳方法是什么?有什么简单的方法可以通过pip或easy_install来做到这一点?我正在尝试在未连接到Internet的FreeBSD盒上安装请求库。 问题答案: 如果该软件包位于PYPI上,则将其及其依赖项下载到某个本地目录。例如 某些软件包可能必须手工存档到外观相似的tarball中。当我想要更新(不稳定)

  • 问题内容: 我想将包从github安装到我的gopath,我已经尝试过了: 仓库在这里。 问题答案: 命令去 下载并安装软件包和依赖项 用法: [packages] Get下载由导入路径命名的包及其依赖项。然后,它将安装命名的软件包,例如“ go install”。 -d标志指示下载软件包后停止。也就是说,它指示不要安装软件包。 -f标志仅在设置-u后才有效,它强制-u不验证每个软件包是否已从其导

  • 问题内容: 我在设置python包时遇到了困难。应该可以使用SetupTools的EasyInstall来解决此问题,但是它们没有适用于Python 2.6的可执行文件。 例如要安装Mechanize,我只想根据INSTALL.txt将Mechanize文件夹放在C:\ Python24 \ Lib \ site- packages中,但是运行测试无效。有人可以帮忙阐明一下吗?谢谢! 问题答案:

  • 问题内容: 我有一个使用YAML的Python程序。我尝试使用将其安装在新服务器上,并且返回以下内容: 如何安装适用于Python的yaml软件包?我正在运行Python 2.7。(作业系统:Debian Wheezy) 问题答案: 您可以尝试使用点子中的搜索功能, 在简短说明中使用yaml在PyPI中查找软件包。这揭示了各种软件包,包括PyYaml,yamltools和PySyck等(请注意,P

  • 问题内容: 我在PyCharm中创建了VirtualEnv来安装我的Python软件包。我想从GitHub安装django项目的这个fork。 https://github.com/django-nonrel/django 对于PyPI提供的软件包,我通常会使用PyCharm中的内置搜索工具,但是我不确定如何从GitHub将其正确安装到PyCharm中的VirtualEnv中。有人知道该怎么做吗?