Python是否有一个包/模块pipe理系统?
Python是否有一个包/模块pipe理系统,类似于Ruby有rubygems,你可以做gem install packagename
?
在安装Python模块时 ,我只能看到对python setup.py install
引用,但是这需要你先find软件包。
最近的进展
2014年3月 :好消息! Python 3.4附带Pip。 Pip一直是Python事实上的标准包pipe理器。 你可以像这样安装一个包 :
pip install httpie
Wahey! 这是任何Python版本的最佳function。 它使社区的大量图书馆都可以访问。 新手不再被排除使用社区图书馆由于设置的高度困难。
但是 ,Python包装体验仍然有许多令人沮丧的地方。 累积起来,他们让Python对新手非常不满意。 此外,长期以来忽视(即从Python 2.0到Python 3.3的软件包pipe理器长达14年)没有对社区造成损害。 我在下面描述。
突出的挫折
理解这一点非常重要,尽pipe有经验的用户能够解决这些问题,但是他们是新手接触Python的重大障碍。 事实上,困难和一般用户不友好可能会阻止其中的许多人。
PyPI网站是相反的
每个使用软件包pipe理器的语言都有一个官方(或半官方)存储库供社区下载和发布软件包。 Python有Python Package Index,PyPI。 https://pypi.python.org/pypi
我们将它的页面与RubyGems和Npm(Node包pipe理器)的页面进行比较。
- 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。 相反,这导致他们走下了一条古老而乏味的道路。
错误:无法findvcvarsall.bat
Numpy是Python最受欢迎的图书馆之一。 尝试用Pip安装它,你会得到这个神秘的错误信息:
错误:无法findvcvarsall.bat
试图解决这是堆栈溢出最stream行的问题之一:“ 错误:无法findvcvarsall.bat ”
很less有人成功。
为了比较,在相同的情况下,Ruby打印这个消息,这解释了正在发生的事情以及如何解决它:
请更新您的PATH以包含构build工具或从http://rubyinstaller.org/downloads下载DevKit,并按照http://github.com/oneclick/rubyinstaller/wiki/Development-Kit
发布软件包很难
Ruby和Nodejs提供全function的软件包pipe理器,Gem(自2007年起)和Npm(自2011年起),并培育了以GitHub为中心的共享社区。 Npm使发布软件包像安装它们一样简单,它已经有64k的软件包 。 RubyGems列出了72k包 。 历史悠久的Python软件包索引仅列出41k 。
历史
面对“ 包含电池 ”的座右铭,Python在没有包pipe理器的情况下直到2014年才发货。
在Pip之前,事实上的标准是easy_install
命令。 这是可悲的不足。 没有命令来卸载软件包。
点是一个巨大的改善。 它有Ruby的gem的大部分function。 不幸的是,Pip直到最近还是很难安装。 事实上,这个问题仍然是Stack Overflow的一个重要的Python问题:“ 如何在Windows上安装pip? ”
而只是为了提供一个对比,还有点 。
Python包索引(PyPI)似乎是标准的:
- 要安装软件包:
pip install MyProject
- 要更新软件包
pip install --upgrade MyProject
- 修复一个包的
pip install MyProject==1.0
版本pip install MyProject==1.0
您可以按如下方式安装软件包pipe理器:
curl -O http://python-distribute.org/distribute_setup.py python distribute_setup.py easy_install pip
参考文献:
作为Ruby和Perl开发人员和学习Python的人,我还没有findeasy_install或pip等同于RubyGems或CPAN。
开发人员更新这些模块时,我倾向于让开发系统运行最新版本的模块,并冻结我的生产系统。 RubyGems和CPAN都可以通过列出可用的模块来轻松find模块,然后根据需要单独安装或稍后更新它们。
easy_install和pip可以很容易地安装一个模块一次我通过浏览器search或通过其他方式了解它,但他们不会告诉我什么是可用的。 我可以明确指定要更新的模块,但应用程序不会告诉我已更新的内容,如果需要的话,也不会更新所有内容。
所以,基本function是在PIP和easy_install中,但有一些function缺less,我希望看到这将使他们更友好,更容易使用,并与CPAN和RubyGems相提并论。
至less有两个, easy_install及其后继点子 。
至less在2014年末, Continuum Analytics的Anaconda Python发行版和Conda软件包pipe理器应该被考虑在内。 它解决了人们在Python中遇到的大多数严重问题(pipe理不同的Python版本,更新Python版本,软件包pipe理,虚拟环境,Windows / Mac兼容性)。
它使您能够使用Python来完成所有您可能需要的任何操作,而无需根本改变系统。 我的下一个首选解决scheme是pip + virtualenv,但是您必须将virtualenv安装到您的系统Python(并且您的系统Python可能不是您想要的版本),或者从源代码构build 。 Anaconda使整个过程成为一个button的点击,以及添加一堆其他function。
那将是easy_install 。
这就是所谓的setuptools。 你用“easy_install”命令运行它。
在Windows上安装http://chocolatey.org/然后;
choco install python
用更新的PATH打开一个新的cmd窗口。 接下来呢
choco install pip
之后你可以
pip install pyside pip install ipython ...
我没有看到其他答案中提到的MacPorts或Homebrew ,但是因为我确实在Stack Overflow的其他地方看到了他们提到的相关问题,所以我会添加我自己的0.02美元,许多人认为MacPorts不仅仅是一个包一般的软件包pipe理器(截至今天,他们列出16311软件包/端口,2931匹配的“python”,尽pipe只适用于Mac),但也作为一个体面的(也许更好)的包pipe理器的Python包/模块:
题
“… Mac python开发人员用什么方法来pipe理他们的模块?”
答案
-
“MacPorts非常适合Mac上的Python。”
-
“最好的方法是使用MacPorts。”
-
“我更喜欢MacPorts …”
-
“用我的MacPorts设置…”
-
“我使用MacPorts来安装由MacPorts跟踪的第三方模块”
SciPy的
“Mac(与Linux不同)没有包pipe理器,但有几个stream行的包pipe理器可以安装,Macports …”
我还在争论是否自己使用MacPorts,但目前我正朝这个方向倾斜。