Python有一个包/模块管理系统,类似于Ruby有rubygems的地方gem install packagename吗?
在安装Python模块时,我只看到对它的引用python setup.py install,但这需要您首先找到该包.
Col*_*nic 212
2014年3月:好消息!Python 3.4附带Pip.Pip一直是Python事实上的标准包管理器.您可以安装这样的包:
pip install httpie
Run Code Online (Sandbox Code Playgroud)
Wahey!这是任何Python版本的最佳功能.它使每个人都可以访问社区丰富的图书馆.由于设置难度大,新手不再被排除在使用社区库之外.
然而,Python包装体验仍然存在许多令人沮丧的挫败感.累积起来,他们让Python对新手来说非常不受欢迎.此外,长期忽视的历史(即,从Python 2.0到Python 3.3没有使用包管理器14年)对社区造成了损害.我在下面描述.
重要的是要理解,虽然有经验的用户能够解决这些挫折,但对于刚接触Python的人来说,它们是一个重大障碍.事实上,困难和一般用户不友好可能会阻止他们中的许多人.
包管理器的每种语言都有一个官方(或准官方)存储库,供社区下载和发布包.Python有Python包索引PyPI. https://pypi.python.org/pypi
让我们将它的页面与RubyGems和Npm(Node包管理器)的页面进行比较.
rails expresssimplejson您将看到RubyGems和Npm页面都以包的单行描述开头,然后是大型友好指令如何安装它.
与此同时,对于天真地浏览PyPI的任何不幸的Python用户来说都是有祸了.在https://pypi.python.org/pypi/simplejson/上,他们没有找到这样有用的指示.但是,有一个很大的绿色"下载"链接.遵循它并不是不合理的.啊哈,他们点击!他们的浏览器下载.tar.gz文件.许多Windows用户甚至无法打开它,但如果他们坚持不懈,他们最终可能会提取它,然后运行setup.py并最终在Google的帮助下运行setup.py install.有些人会放弃并重新发明轮子..
当然,所有这一切都是错误的.安装软件包的最简单方法是使用Pip命令.但PyPI甚至没有提到皮普.相反,它引导他们走上了古老而繁琐的道路.
Numpy是Python最受欢迎的图书馆之一.尝试使用Pip安装它,你得到这个神秘的错误信息:
错误:无法找到vcvarsall.bat
试图解决这个问题是Stack Overflow上最受欢迎的问题之一:" 错误:无法找到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直到最近才讽刺地难以安装.实际上,问题仍然是Stack Overflow上的一个顶级Python问题:" 如何在Windows上安装pip? "
Tho*_*att 64
Python包索引(PyPI)似乎是标准的:
pip install MyProjectpip install --upgrade MyProjectpip install MyProject==1.0您可以按如下方式安装包管理器:
curl -O http://python-distribute.org/distribute_setup.py
python distribute_setup.py
easy_install pip
Run Code Online (Sandbox Code Playgroud)
参考文献:
the*_*Man 21
作为Ruby和Perl开发人员和学习Python人员,我没有发现easy_install或pip等同于RubyGems或CPAN.
我倾向于让开发系统在开发人员更新时运行最新版本的模块,并在设置版本中冻结我的生产系统.RubyGems和CPAN都可以通过列出可用的内容轻松找到模块,然后安装并稍后根据需要单独或批量更新它们.
easy_install和pip使我可以轻松安装模块ONCE我通过浏览器搜索找到它或通过其他方式了解它,但它们不会告诉我什么是可用的.我可以明确地命名要更新的模块,但是应用程序不会告诉我更新的内容,也不会批量更新所有内容.
所以,pip和easy_install中的基本功能都存在,但是有些功能缺失,我希望看到这些功能可以使它们更友好,更易于使用,并且与CPAN和RubyGems相提并论.
and*_*man 11
截至2014年底,应该考虑使用康美达包管理器的Continuum Analytics的Anaconda Python发行版.它通过一个有凝聚力的下载解决了人们遇到的大多数严重问题(管理不同的Python版本,更新Python版本,包管理,虚拟环境,Windows/Mac兼容性).
它使您可以使用Python完成您想要的所有操作,而无需更改系统.我的下一个首选解决方案是pip + virtualenv,但您必须将virtualenv安装到您的系统Python中(并且您的系统Python可能不是您想要的版本),或者从源代码构建.Anaconda通过点击按钮完成整个过程,并添加了许多其他功能.
我在这里没有在其他答案中提到MacPorts或Homebrew,但是由于我确实在Stack Overflow的其他地方看到了有关相关问题的提及,因此我会加自己的0.02美元,很多人似乎认为MacPorts不仅仅是一个软件包常规的软件包管理器(到目前为止,它们列出了16311个软件包/端口,2931个匹配的“ python”,尽管仅适用于Mac),但也可以作为Python软件包/模块的不错的(也许更好)的软件包管理器:
“ ... Mac python开发人员使用什么方法来管理其模块?”
“ Mac(与Linux不同)没有软件包管理器,但是您可以安装几个流行的软件包管理器。Macports...”
我仍在争论是否自己使用MacPorts,但此刻我正朝着这个方向发展。
| 归档时间: |
|
| 查看次数: |
105546 次 |
| 最近记录: |