2013-03-30 63 views
43

我有一个外部软件包,我想从tar文件安装到我的python virtualenv中。 安装软件包的最佳方式是什么?'python setup.py install'和'pip install'之间的区别

我发现了两种方法可以做到这一点: 1)解压缩tar文件,然后在提取的目录中运行'python setup.py install'。 2)'pip install packagename.tar.gz'from example#7 in https://pip.pypa.io/en/stable/reference/pip_install/#examples

如果在这两种方式中做它们有什么区别,

+2

使用'pip'。您可以使用它卸载软件包。 – Blender

+0

“来自源代码”,如“VCS checkout”中,或者“sdist”中的? – delnan

+0

什么是“最好”取决于您的要求!你有没有尝试过这些解决方案,并以某种方式失败?或者你问这些方法之间有什么区别? –

回答

48

表面上,两者都做同样的事情:或者python setup.py installpip 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 Package Index(PyPi)以查看包是否存在,以及会自动为你下载,提取和安装软件包。除了少数几个例外,几乎每一个真正有用的Python库都可以在PyPi上找到。
  • pip会让你easily install轮子,这是Python发行版的新标准。 More info about wheels
  • pip提供了与使用virtualenv完美集成的其他好处,该程序可让您运行多个需要在计算机上存在冲突的库和Python版本的项目。 More info
  • 从Python 2.x系列的Python 2.7.9开始,Python 3.x系列上的Python 3.4.0开始,pip与Python默认捆绑在一起,使其更易于使用。

所以基本上用pip。它只改进了使用python setup.py install


如果您使用的Python的是旧版本,无法升级,而没有安装点子,你可以找到在以下链接安装PIP的更多信息:

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

通常还建议您一起使用pip和virtualenv。如果你是Python的初学者,我个人认为在全球范围内使用pip和安装软件包就可以了,但最终我认为你应该转向使用virtualenv来解决更严重的项目。

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

8

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

pip是的软件包管理器,它可以安装,升级,名单和卸载包,喜欢熟悉的包管理器包括:dpkg, apt, yum, urpmi, ports等引擎盖下,它将运行python setup.py install,但具体的选项来控制的东西如何以及在何处结束已安装。

总结:使用pip

相关问题