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

Python是否有一个包/模块管理系统,类似于Ruby如何在rubygems中执行gem install packagename

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


最近的进展

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

pip install httpie

Wahey! 这是任何Python版本的最佳功能。 它使每个人都可以访问社区的丰富图书馆。 由于安装难度大,新手不再被排除在社区图书馆之外。

但是 ,Python包装体验仍然存在一些令人遗憾的问题。 累积起来,他们让Python对新手非常不满意。 此外,漫长的忽视历史(即,从Python 2.0到Python 3.3的14年未与软件包管理器一起交付)对社区造成了损害。 我在下面描述。

杰出的挫折

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

PyPI网站是相反的

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

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

  • https://rubygems.org/gems/rails包rails RubyGems页面
  • https://www.npmjs.org/package/express包裹express Npm页面
  • 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。 相反,它使他们走下了一条古老而乏味的道路。

    错误:无法找到vcvarsall.bat

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

    错误:无法找到vcvarsall.bat

    试图解决这是堆栈溢出最流行的问题之一:“错误:无法找到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使发布软件包像安装它们一样简单,它已经有64k软件包。 RubyGems列出72k包。 历史悠久的Python软件包索引仅列出41k。

    历史

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

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

    点是一个巨大的改进。 它具有Ruby's Gem的大部分功能。 不幸的是,Pip直到最近才开始讽刺地很难安装。 事实上,这个问题仍然是堆栈溢出的一个顶级Python问题:“我如何在Windows上安装pip?”


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


    Python Package Index(PyPI)似乎是标准的:

  • 安装软件包: pip install MyProject
  • 更新软件包pip install --upgrade MyProject
  • 修复程序pip install MyProject==1.0 的版本pip install MyProject==1.0
  • 您可以按如下方式安装软件包管理器:

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

    参考文献:

  • http://guide.python-distribute.org/
  • http://pypi.python.org/pypi/distribute
  • 链接地址: http://www.djcxy.com/p/4467.html

    上一篇: Does Python have a package/module management system?

    下一篇: Export only modified and added files with folder structure in Git