Python 是否有包/模块管理系统,类似于 Ruby 的 rubygems,您可以在其中执行 gem install packagename
?
在 Installing Python Modules ,我只看到对 python setup.py install
的引用,但这需要你先找到包。
最佳答案
2014 年 3 月:好消息! Python 3.4与 Pip 一起发货。 Pip 长期以来一直是 Python 的事实上的标准包管理器。您可以安装a package像这样:
pip install httpie
哇!这是任何 Python 版本的最佳特性。它使每个人都可以访问社区中丰富的图书馆。新手不再因为设置困难而无法使用社区库。
但是,Python 打包体验仍然存在许多令人沮丧的问题。累积起来,它们使 Python 对新手非常不受欢迎。此外,长期的忽视(即从 Python 2.0 到 Python 3.3 的 14 年没有使用包管理器)确实对社区造成了损害。我在下面描述两者。
重要的是要了解,虽然有经验的用户能够解决这些挫折,但对于 Python 新手来说,它们是巨大的障碍。事实上,困难和普遍的用户不友好可能会阻止他们中的许多人。
每种具有包管理器的语言都有一个官方(或准官方)存储库,供社区下载和发布包。 Python 有 Python 包索引,PyPI。 https://pypi.python.org/pypi
让我们将它的页面与 RubyGems 和 Npm(Node 包管理器)的页面进行比较。
rails
express
simplejson
您会看到 RubyGems 和 Npm 页面都以包的单行描述开头,然后是如何安装它的大型友好说明。
同时,任何天真地浏览 PyPI 的倒霉 Python 用户都有祸了。在 https://pypi.python.org/pypi/simplejson/ ,他们将找不到这样有用的说明。但是,有一个大的绿色“下载”链接。跟随它并不是没有道理的。啊哈,他们点击!他们的浏览器会下载一个 .tar.gz
文件。许多 Windows 用户甚至无法打开它,但如果他们坚持下去,他们最终可能会提取它,然后运行 setup.py
并最终在 Google setup.py install
的帮助下.有些人会放弃并重新发明轮子..
当然,这一切都是错误的。安装包最简单的方法是使用 Pip 命令。但是 PyPI 甚至没有提到 Pip。相反,它引导他们走上了一条古老而乏味的道路。
Numpy 是 Python 最流行的库之一。尝试使用 Pip 安装它,您会收到这条神秘的错误消息:
Error: Unable to find vcvarsall.bat
尝试解决这个问题是 Stack Overflow 上最受欢迎的问题之一:“error: Unable to find vcvarsall.bat”
很少有人成功。
作为比较,在相同的情况下,Ruby 会打印此消息,说明发生了什么以及如何修复它:
Please update your PATH to include build tools or download the DevKit from http://rubyinstaller.org/downloads and follow the instructions at http://github.com/oneclick/rubyinstaller/wiki/Development-Kit
Ruby 和 Nodejs 附带功能齐全的包管理器 Gem(自 2007 年起)和 Npm(自 2011 年起),并培育了以 GitHub 为中心的共享社区。 npm 使 publishing packages就像安装它们一样简单,它已经有 64k packages . RubyGems 列表 72k packages .古老的 Python 包索引列表 only 41k .
不顾它的“batteries included”座右铭,Python 在 2014 年之前一直没有包管理器。
在 Pip 之前,事实上的标准是命令 easy_install
。可悲的是,它是不够的。 was no 命令卸载软件包。
Pip 是一个巨大的改进。它具有 Ruby 的 Gem 的大部分功能。不幸的是,Pip - 直到最近 - 具有讽刺意味的是难以安装。事实上,这个问题仍然是 Stack Overflow 上的一个顶级 Python 问题:“How do I install pip on Windows?”
https://stackoverflow.com/questions/2436731/