python - Python 有包/模块管理系统吗?

Python 是否有包/模块管理系统,类似于 Ruby 的 ruby​​gems,您可以在其中执行 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 新手来说,它们是巨大的障碍。事实上,困难和普遍的用户不友好可能会阻止他们中的许多人。

PyPI 网站反倒有用

每种具有包管理器的语言都有一个官方(或准官方)存储库,供社区下载和发布包。 Python 有 Python 包索引,PyPI。 https://pypi.python.org/pypi

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

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

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

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

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

错误:无法找到 vcvarsall.bat

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/

相关文章:

linux - 在 LINUX 中确定 .a 库/存档是 32 位还是 64 位?

python - 是否可以将另一个版本的 Python 安装到 Virtualenv?

python - tight_layout() 不考虑数字字幕

linux - 解压 tar.gz 文件

python - 重命名 Pandas 中的特定列

linux - 如何粘贴到终端?

linux - 多个 GZip 文件的快速连接

c - 什么是 vdso 和 vsyscall?

python - 通过 'ElementTree' 在 Python 中使用命名空间解析 XML

python - 将一对列表/元组解压缩成两个列表/元组