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包管理器)的页面进行比较。
rails
RubyGems页面 express
Npm页面 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
参考文献:
上一篇: Does Python have a package/module management system?
下一篇: Export only modified and added files with folder structure in Git