题 'python setup.py install'和'pip install'之间的区别


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

我发现了两种方法可以做到:

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

如果用这两种方式做它们有什么不同的话。


54
2018-03-30 22:13


起源


使用 pip。您可以用它卸载包。 - Blender
“来自源”,如“VCS结帐”,或如 sdist?
什么是“最好”取决于您的要求!您是否尝试过这些解决方案中的任何一种并且在某种程度上缺少它们?或者你在问有什么区别 是 这些方法之间? - Martin Atkins
在fedora上,例如,使用 yum。 - perreal


答案:


从表面上看,两者都做同样的事情:做其中之一 python setup.py install 要么 pip install <PACKAGE-NAME> 将为您安装您的python包,只需要少量的烦恼。

但是,使用pip提供了一些额外的优势,使其使用起来更好。

  • pip将自动为您下载包的所有依赖项。相反,如果你使用 setup.py,你经常需要手动搜索和下载依赖项,这是乏味的,可能会令人沮丧。
  • pip跟踪各种元数据,使您可以使用单个命令轻松卸载和更新软件包: pip uninstall <PACKAGE-NAME> 和 pip install --upgrade <PACKAGE-NAME>。相反,如果您使用安装包 setup.py如果你想摆脱它,你必须手动删除和维护一个包,这可能是容易出错的。
  • 您不再需要手动下载文件。如果你使用 setup.py,你必须访问图书馆的网站,找出下载位置,解压缩文件,运行 setup.py...相比之下,pip会自动搜索 Python包索引 (PyPi)查看包是否存在,并将自动为您下载,提取和安装包。除了少数例外,几乎每个真正有用的Python库都可以在PyPi上找到。
  • 皮普会让你 轻松安装 wheel,这是Python发行版的新标准。 有关车轮的更多信息
  • pip提供了与使用相结合的额外好处 virtualenv,这是一个允许您运行多个项目的程序,这些项目需要在您的计算机上存在冲突的库和Python版本。 更多信息
  • 默认情况下,pip与Python 2.x系列中的Python 2.7.9以及Python 3.x系列中的Python 3.4.0捆绑在一起,使其更易于使用。

基本上,请使用pip。它只提供了改进而不是使用 python setup.py install


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

pip本身并不需要教程。 90%的时间,你真正需要的唯一命令是 pip install <PACKAGE-NAME>。也就是说,如果您有兴趣了解更多关于使用pip可以做些什么的详细信息,请参阅:

通常也建议您一起使用pip和virtualenv。如果你是Python的初学者,我个人认为只需在全球范围内使用pip和安装软件包就可以了。但最终我认为你应该过渡到使用virtualenv来处理更严肃的项目。

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


64
2018-03-31 16:09





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

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

总结:使用 pip


10
2018-03-31 18:20