Python是否有一个包/模块pipe理系统?

Python是否有一个包/模块pipe理系统,类似于Ruby有rubygems,你可以做gem install packagename

安装Python模块时 ,我只能看到对python setup.py install引用,但是这需要你先find软件包。

最近的进展

2014年3月 :好消息! Python 3.4附带Pip。 Pip一直是Python事实上的标准包pipe理器。 你可以像这样安装一个包 :

 pip install httpie 

Wahey! 这是任何Python版本的最佳function。 它使社区的大量图书馆都可以访问。 新手不再被排除使用社区图书馆由于设置的高度困难。

但是 ,Python包装体验仍然有许多令人沮丧的地方。 累积起来,他们让Python对新手非常不满意。 此外,长期以来忽视(即从Python 2.0到Python 3.3的软件包pipe理器长达14年)没有对社区造成损害。 我在下面描述。

突出的挫折

理解这一点非常重要,尽pipe有经验的用户能够解决这些问题,但是他们是新手接触Python的重大障碍。 事实上,困难和一般用户不友好可能会阻止其中的许多人。

PyPI网站是相反的

每个使用软件包pipe理器的语言都有一个官方(或半官方)存储库供社区下载和发布软件包。 Python有Python Package Index,PyPI。 https://pypi.python.org/pypi

我们将它的页面与RubyGems和Npm(Node包pipe理器)的页面进行比较。

  1. https://rubygems.org/gems/rails包;rails RubyGems页面
  2. https://www.npmjs.org/package/express包裹;express Npm页面
  3. https://pypi.python.org/pypi/simplejson/包的;simplejson PyPI页面

你会看到RubyGems和Npm页面都是以包的一行描述开始,然后是大的友好的说明如何安装它。

同时,任何天真地浏览PyPI的倒霉的Python用户都会感到悲伤。 在https://pypi.python.org/pypi/simplejson/上; ,他们将找不到这样有用的指示。 然而,有一个大的绿色“下载”链接。 遵循它并不是不合理的。 啊哈,他们点击! 他们的浏览器下载一个.tar.gz文件。 许多Windows用户甚至不能打开它,但是如果他们坚持不懈,他们最终可能会提取它,然后运行setup.py ,最终在Google setup.py install的帮助下。 有些人会放弃并重新发明轮子..

当然,这一切都是错误的。 安装软件包的最简单方法是使用Pip命令。 但是PyPI甚至没有提到PIP。 相反,这导致他们走下了一条古老而乏味的道路。

错误:无法findvcvarsall.bat

Numpy是Python最受欢迎的图书馆之一。 尝试用Pip安装它,你会得到这个神秘的错误信息:

错误:无法findvcvarsall.bat

试图解决这是堆栈溢出最stream行的问题之一:“ 错误:无法findvcvarsall.bat ”

很less有人成功。

为了比较,在相同的情况下,Ruby打印这个消息,这解释了正在发生的事情以及如何解决它:

请更新您的PATH以包含构build工具或从http://rubyinstaller.org/downloads下载DevKit,并按照http://github.com/oneclick/rubyinstaller/wiki/Development-Kit

发布软件包很难

Ruby和Nodejs提供全function的软件包pipe理器,Gem(自2007年起)和Npm(自2011年起),并培育了以GitHub为中心的共享社区。 Npm使发布软件包像安装它们一样简单,它已经有64k的软件包 。 RubyGems列出了72k包 。 历史悠久的Python软件包索引仅列出41k 。

历史

面对“ 包含电池 ”的座右铭,Python在没有包pipe理器的情况下直到2014年才发货。

在Pip之前,事实上的标准是easy_install命令。 这是可悲的不足。 没有命令来卸载软件包。

点是一个巨大的改善。 它有Ruby的gem的大部分function。 不幸的是,Pip直到最近还是很难安装。 事实上,这个问题仍然是Stack Overflow的一个重要的Python问题:“ 如何在Windows上安装pip? ”

而只是为了提供一个对比,还有点 。

Python包索引(PyPI)似乎是标准的:

  • 安装软件包: pip install MyProject
  • 更新软件包pip install --upgrade MyProject
  • 修复一个包的pip install MyProject==1.0 版本 pip install MyProject==1.0

您可以按如下方式安装软件包pipe理器:

 curl -O http://python-distribute.org/distribute_setup.py python distribute_setup.py easy_install pip 

参考文献:

作为Ruby和Perl开发人员和学习Python的人,我还没有findeasy_install或pip等同于RubyGems或CPAN。

开发人员更新这些模块时,我倾向于让开发系统运行最新版本的模块,并冻结我的生产系统。 RubyGems和CPAN都可以通过列出可用的模块来轻松find模块,然后根据需要单独安装或稍后更新它们。

easy_install和pip可以很容易地安装一个模块一次我通过浏览器search或通过其他方式了解它,但他们不会告诉我什么是可用的。 我可以明确指定要更新的模块,但应用程序不会告诉我已更新的内容,如果需要的话,也不会更新所有内容。

所以,基本function是在PIP和easy_install中,但有一些function缺less,我希望看到这将使他们更友好,更容易使用,并与CPAN和RubyGems相提并论。

至less有两个, easy_install及其后继点子 。

至less在2014年末, Continuum Analytics的Anaconda Python发行版和Conda软件包pipe理器应该被考虑在内。 它解决了人们在Python中遇到的大多数严重问题(pipe理不同的Python版本,更新Python版本,软件包pipe理,虚拟环境,Windows / Mac兼容性)。

它使您能够使用Python来完成所有您可能需要的任何操作,而无需根本改变系统。 我的下一个首选解决scheme是pip + virtualenv,但是您必须将virtualenv安装到您的系统Python(并且您的系统Python可能不是您想要的版本),或者从源代码构build 。 Anaconda使整个过程成为一个button的点击,以及添加一堆其他function。

那将是easy_install 。

这就是所谓的setuptools。 你用“easy_install”命令运行它。

你可以在http://pypi.python.org/find这个目录;

在Windows上安装http://chocolatey.org/然后;

 choco install python 

用更新的PATH打开一个新的cmd窗口。 接下来呢

 choco install pip 

之后你可以

 pip install pyside pip install ipython ... 

我没有看到其他答案中提到的MacPorts或Homebrew ,但是因为我确实在Stack Overflow的其他地方看到了他们提到的相关问题,所以我会添加我自己的0.02美元,许多人认为MacPorts不仅仅是一个包一般的软件包pipe理器(截至今天,他们列出16311软件包/端口,2931匹配的“python”,尽pipe只适用于Mac),但也作为一个体面的(也许更好)的包pipe理器的Python包/模块:

“… Mac python开发人员用什么方法来pipe理他们的模块?”

答案

  • “MacPorts非常适合Mac上的Python。”

  • “最好的方法是使用MacPorts。”

  • “我更喜欢MacPorts …”

  • “用我的MacPorts设置…”

  • “我使用MacPorts来安装由MacPorts跟踪的第三方模块”

SciPy的

“Mac(与Linux不同)没有包pipe理器,但有几个stream行的包pipe理器可以安装,Macports …”

我还在争论是否自己使用MacPorts,但目前我正朝这个方向倾斜。