提问者:小点点

“python setup.py install”和“pip install”之间的区别


我有一个外部包,我想从一个tar文件安装到我的python virtualenv中。安装软件包的最佳方法是什么?

我发现了两种方法:

  1. 解压缩tar文件,然后在解压缩的目录中运行python setup.py install
  2. pip install packageName.tar.gz来自https://pip.pypa.io/en/stable/reference/pip_install/#examples
  3. 中的示例#7

这两种方法是否有区别。


共3个答案

匿名用户

从表面上看,两者都在做相同的事情:执行python setup.py installpip install将为您安装您的python包,并且不会带来太多的麻烦。

然而,使用pip提供了一些额外的优点,使其更易于使用。

  • PIP将自动为您下载包的所有依赖项。相反,如果您使用setup.py,则通常必须手动搜索并下载依赖项,这既乏味又可能令人沮丧。
  • pip跟踪各种元数据,通过这些元数据,您可以轻松地卸载和更新软件包,只需使用一个命令:pip uninstallpip install--upgrade。相反,如果使用setup.py安装软件包,则如果要删除该软件包,则必须手动删除和维护该软件包,这可能很容易出错。
  • 您不再需要手动下载文件。如果您使用setup.py,您必须访问库的网站,找出从哪里下载,解压缩文件,运行setup.py.。。相反,pip会自动搜索Python包索引(PyPi),查看包是否存在,并自动为您下载,提取和安装包。除了少数例外,几乎所有真正有用的Python库都可以在PyPI上找到。
  • PIP将让您轻松地安装车轮,这是Python发行版的新标准。有关车轮的详细信息。
  • PIP提供了与使用VirtualEnv很好地集成的额外好处,后者是一个允许您在计算机上运行需要冲突库和Python版本的多个项目的程序。详细信息。
  • 默认情况下,PIP与Python绑定在Python 2.x系列上的Python 2.7.9以及Python 3.x系列上的Python 3.4.0,使其更易于使用。

所以基本上,使用PIP。它只提供了使用Python setup.py install的改进。

如果您使用的是旧版本的Python,无法升级,也没有安装pip,您可以在以下链接中找到有关安装pip的更多信息:

  • 关于为所有操作系统安装pip的正式说明
  • 在Windows上安装pip的说明(包括常见问题的解决方案)
  • 安装pip for Mac Ox的说明

pip本身并不需要教程。90%的情况下,您真正需要的唯一命令是pip install。尽管如此,如果您有兴趣了解更多关于使用pip可以做什么的详细信息,请参阅:

  • 快速入门指南
  • 正式文档。

通常还建议您一起使用pip和virtualenv。如果您是Python的初学者,我个人认为首先使用pip并在全球范围内安装包是不错的,但最终我认为您应该在处理更重要的项目时过渡到使用virtualenv。

如果您想了解更多关于一起使用pip和virtualenv的信息,请参阅:

  • 为什么要使用pip和VirtualEnv
  • 为Python初学者提供的关于Pip和Virtualenv的非魔法介绍
  • 虚拟环境

匿名用户

Python setup.py install类似于make install:它是编译文件并将其复制到目标目录的有限方法。这并不意味着这是在您的系统上真正安装软件的最佳方法。

pip是一个包管理器,它可以安装,升级,列出和卸载包,就像我们熟悉的包管理器一样,包括:dpkg,apt,yum,urpmi,ports等。在引擎盖下面,它将运行python setup.py install,但有特定的选项来控制最终安装的方式和位置。

总之:使用pip

匿名用户

问题是关于安装包含python包的本地tarball的首选方法,而不是关于将包上传到像PyPI这样的索引服务的优点。

据我所知,一些软件分销商并没有将他们软件包上传到PyPi,而是要求开发人员从他们的网站下载软件包并进行安装。

python setup.py安装

这可以工作,但不推荐。不必打开tarball文件并进入其中运行setup.py文件。

pip安装。。/path/to/packagename.tar.gz

这是设计和首选的方式。简洁并与Pypi风格的包对齐。

有关PIP安装的更多信息可在此处找到:https://pip.readthedocs.io/en/stable/reference/pip_install/