如何进行Python包管理?

Ico*_*oin 20 python pip virtualenv

来自Node.js + npm背景,尝试理解与Python包管理相关的所有事情真的很噩梦.经过几个小时的研究,我偶然发现了所有这些关键词:

  • easy_install的
  • 的virtualenv
  • 果仁
  • setuptools的
  • 的distutils
  • 的PyPI
  • 站点包

有人可以帮我解读这些条款并将它们置于历史背景中吗?例如,"distutils是第一个包管理器,但它被Y取代,因为Z".

我非常喜欢Python(语言),但是对于过去几年一直在使用惊人的npm的人来说,包管理似乎是一个真正的噩梦.

Erl*_*ton 20

套餐类型
鸡蛋 VS VS都不是.它们的意思不在于python包可以从它的"源"安装而不被打包成鸡蛋或轮子.

打包实用程序
有几个库提供用于打包python应用程序的实用程序,包括distutils和setuptools.关于此,已有一篇优秀的帖子.

easy_install
setuptools的一部分,允许构建和安装python包.经常气馁赞成Pip.旨在使包装的安装变得简单,做下载的工作并将它们移动到正确的位置(因此得名).

Pip
python包的包管理器,以及easy_install的替代品! 请参阅此处,了解人们喜欢easy_install的原因.可以做一些巧妙的事情,比如直接从git存储库安装包,或者在目标机器上编译C扩展.后者对于它是否可取是有争议的,但是如果你想要的话,这是一个很好的功能.

PyPI
python包索引,默认情况下easy_install和Pip搜索可用包.基本上是社区接受的巨大模块在线存储库.

virtualenv
一种攻击环境变量以"隔离"python安装及其相关模块的方法.喜欢Pip,因为 Ian Bicking都写了这两个.基本上,你使用pip来安装virtualenv系统范围,然后允许你创建python虚拟环境,每个环境都有自己的python,pip和各种模块的副本.这让你有多个版本的python或安装一个模块只是为了测试,而不会破坏你的系统范围的python安装.

virtualenvwrapper
一个非常方便的shell脚本,可以更轻松地创建和拆除虚拟环境.

site-packages
用于安装python模块的受支持位置之一.生活在某个地方/usr/lib/pythonX.X/site-packages.还有其他支持的位置,像dist-packages用户特定位置.

这对你来说意味着什么?
我建议你不要关注easy_install,只需使用pip.请也总是使用virtualenv.通常,您应该在工作站上安装系统范围的唯一python模块是pip和virtualenv.我完全忽略了鸡蛋和轮子,但如果你打算专业地分发包或者在PyPI上托管它们,你可能想要调查它们.另外,如果要创建python包,则需要学习使用setuptools编写安装脚本.我的建议是永远不要使用distutils.

更多关于python.org上的阅读
页面关于包装的内容涉及很多这些主题
Python包装一个噩梦
一个伟大的帖子违背了最常见的建议,包括我的!