Python是否具有包/模块管理系统?

问题:

Python有一个包/模块管理系统,类似于Ruby有Ruby的可执行方式gem install packagename
Installing Python Modules上,我只看到对python setup.py install的引用,但这要求您先查找包。

回答:

最近进展

 2014年3月:好消息! Python 3.4配有Pip。 Pip长期以来一直是Python的事实上的标准包管理器。你可以这样安装a package

pip install httpie

Wahey!这是任何Python版本的最佳功能。它使每个人都可以访问社区的图书馆财富。新手们不再被设计困难的使用社区图书馆排除在外。
 然而,仍然有许多对Python包装经验的沮丧。累积地,他们使Python非常不欢迎新手。此外,漫长的忽视历史(即,不将包装经理14年从Python 2.0运送到Python 3.3)对社区造成了损害。我下面描述。

出色的挫折

重要的是要明白,虽然经验丰富的用户能够解决这些挫折感,但对于Python来说,这是很重要的障碍。事实上,困难和普遍的用户不友好可能会阻止其中许多人。

PyPI网站是有帮助的

具有包裹经理的每种语言都有一个官方(或准官方)存储库供社区下载和发布包。 Python具有Python包索引,PyPI。 https://pypi.python.org/pypi
我们将其页面与RubyGems和Npm(Node package manager)进行比较。

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

您将看到RubyGems和Npm页面都以包装的一行描述开始,然后大量友好的说明如何安装。
同时,对于天真浏览PyPI的任何不幸的Python用户都感到失望。在https://pypi.python.org/pypi/simplejson/上,他们没有找到有用的指示。然而,有一个很大的绿色“下载”链接。遵循它是不合理的。阿哈,他们点击!他们的浏览器下载了.tar.gz文件。许多Windows用户甚至无法打开它,但是如果他们坚持下去,他们可能会最终提取它,然后运行setup.py并最终在Google setup.py install的帮助下运行。有些会放弃和重塑轮子..
当然,这一切都是错误的。安装包的easiest方式是使用Pip命令。但是PyPI甚至没有提到Pip。相反,它导致了一个古老而乏味的道路。

错误:无法找到vcvarsall.bat

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

错误:无法找到vcvarsall.bat

尝试解决这个问题是Stack Overflow中最受欢迎的问题之一:“error: Unable to find vcvarsall.bat
很少有人成功。
为了比较,在同样的情况下,Ruby打印了这个消息,这解释了发生了什么以及如何解决它:

请更新您的PATH以包含构建工具或从http://rubyinstaller.org/downloads下载DevKit,并按照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。这是不足够的没有命令卸载软件包。
皮皮是一个巨大的进步。它拥有Ruby的宝石的大部分功能。不幸的是,Pip直到最近才变得很难安装。事实上,问题仍然是Stack Overflow上的一个顶级Python问题:“How do I install pip on Windows?

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: Does Python have a package/module management system?

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

37 + = 46