首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >apt-获取安装与pip安装

apt-获取安装与pip安装
EN

Ask Ubuntu用户
提问于 2014-03-09 15:51:59
回答 3查看 129K关注 0票数 129

我对在下载python包时必须使用上述命令的情况有些困惑。我试图根据这个问题的答案下载一个名为pyudev的包。我执行了以下命令:

代码语言:javascript
复制
sudo pip install python-pyudev

但收到以下信息:

代码语言:javascript
复制
Downloading/unpacking python-pyudev

  Could not find any downloads that satisfy the requirement python-pyudev
Cleaning up...
No distributions at all found for python-pyudev
Storing complete log in /home/vineet/.pip/pip.log

然而,以下内容运作良好:

代码语言:javascript
复制
sudo apt-get install python-pyudev

什么时候应该使用apt-get来安装软件包,什么时候使用python-pip

EN

回答 3

Ask Ubuntu用户

回答已采纳

发布于 2014-03-09 16:53:37

PyPI是Package索引库-- Python模块的存储库。

pip用于直接从PyPI下载和安装软件包。PyPI由Python软件基金会托管。它是一个专门的包管理器,只处理python包。

apt-get用于从Ubuntu存储库下载和安装包,这些存储库由Canonical托管。

apt-getpip安装python包的一些区别如下:

  • 规范只为选定的python模块提供包。然而,PyPI承载了范围更广的python模块。因此,有许多您无法使用apt-get安装的python模块。
  • 规范只托管任何包的单个版本(通常是最近发布的或最近发布的包)。因此,对于apt-get,我们无法确定我们想要的package的版本。在这种情况下,pip可以帮助我们。我们可以安装以前上传到PyPI上的任何版本的包。在依赖关系冲突的情况下,这是非常有用的。
  • apt-get在系统范围内安装python模块.我们不能只在我们的项目维塔列夫中安装模块。pip为我们解决了这个问题。如果我们在激活virtualenv之后使用pip,那么它就足够智能,只在我们的项目virtualenv中安装模块。如前所述,如果某个特定python包的版本已经安装在系统范围内,并且我们的项目之一需要同一个python包的旧版本,那么在这种情况下,我们可以使用virtualenv和pip来安装该版本的python包,而不会发生任何冲突。
  • 正如@Radu Rădeanu所指出的在这个答案中,包的名称通常也会有所不同。规范通常将Python2包命名为python-<package_name>,Python3包命名为python3-<package_name>。而对于pip,我们通常只需要对Python2和Python3包都使用<package_name>

您应该使用哪一个:

apt-getpip都是成熟的包管理器,在安装时自动安装任何其他包依赖项。你可以用任何你喜欢的人。但是,如果您需要安装一个特定版本的package,或者在一个虚拟环境中安装这个包,或者安装一个只托管在PyPI上的包;只有pip才能帮助您解决这个问题。否则,如果您不介意在系统范围内安装软件包,那么使用apt-get还是pip并不重要。

票数 126
EN

Ask Ubuntu用户

发布于 2018-05-08 13:22:53

我喜欢的方法是始终使用apt,并且只在Debian/Ubuntu存储库中还不能使用pip的情况下才使用该模块,但只在用户上下文- --user标志中使用。无论如何,通过使用pip,您必须从Ubuntu的存储库中获得安装的所有构建依赖项,或者自己提供它们,这可能是一项繁琐的任务。apt-get安装二进制包,而pip在下载后构建它们。不应该使用pip将模块安装到系统位置。这完全是错误的。始终使用--user标志将模块安装到本地位置。正确配置的PYTHONPATH允许python首先从家中获取模块,然后再安装带有apt-get的系统模块。

票数 5
EN

Ask Ubuntu用户

发布于 2020-06-15 21:45:01

这是在一个广泛链接的GitHub pip站点上的问题上就系统安装的pip和本地安装的pip提供的建议:

  1. 只有使用您的系统包管理器来升级系统pip。系统安装的pip属于发行版,如果您不使用发行版提供的工具来管理它,就会遇到问题。是的,我们知道pip说“您应该用pip安装-U pip进行升级”--这在pip管理的安装中是这样的,理想情况下,发行版应该修补此消息,以便在系统pip中给出适当的指示,但它们没有。我们正在与它们合作,但这不会很快发生(请记住,我们正在这里查看人们正在升级旧版本的pip的情况,所以将补丁升级到新版本不会有帮助)。
  2. 千万不要和pip一起使用sudo。这是从第一点开始的。如果您认为您需要使用sudo,您可能正在尝试修改一个发行版拥有的文件。见第1点。
  3. 更喜欢使用--用户。通过这样做,您只需在您的个人目录中安装软件包,从而避免干扰pip的系统副本。但是这里有一些你需要注意的路径问题。我们稍后再讨论这些。简单地说,遵循这个建议是可能的,但仍然会遇到问题,因为您实际上并没有以用户身份运行您安装的包装器。
票数 5
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/431780

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档