Python是否具有包/模块管理系统,类似于Ruby在哪里可以使用rubygems gem install packagename
?
在“ 安装Python模块”上,我仅看到对的引用python setup.py install
,但这需要您首先找到该软件包。
Python是否具有包/模块管理系统,类似于Ruby在哪里可以使用rubygems gem install packagename
?
在“ 安装Python模块”上,我仅看到对的引用python setup.py install
,但这需要您首先找到该软件包。
Answers:
2014年3月:好消息!Pip随附了Python 3.4。Pip长期以来一直是Python的事实上的标准包管理器。您可以这样安装软件包:
pip install httpie
哇!这是所有Python版本中的最佳功能。它使每个人都可以访问社区丰富的图书馆。新手不再因设置困难而无法使用社区库。
但是,Python打包经验仍然有许多令人沮丧的地方。累积地,它们使Python对新手来说非常不受欢迎。而且,长期的忽视历史(即从Python 2.0到Python 3.3一直没有使用包管理器交付14年)确实对社区造成了损害。我在下面描述。
重要的是要了解,尽管经验丰富的用户能够解决这些问题,但它们却是Python新手的重大障碍。实际上,困难和普遍的用户不友好可能阻止了其中许多人。
每种带有程序包管理器的语言都有一个官方(或准官方)存储库,供社区下载和发布程序包。Python具有Python包索引PyPI。 https://pypi.python.org/pypi
让我们将其页面与RubyGems和Npm(节点包管理器)的页面进行比较。
rails
express
simplejson
您将看到RubyGems和Npm页面均以该程序包的一行说明开始,然后是如何安装的友好说明。
同时,天真地浏览到PyPI的所有不幸的Python用户都会遇到麻烦。在https://pypi.python.org/pypi/simplejson/上,他们找不到任何有用的说明。但是,有一个绿色的大“下载”链接。遵循它并非没有道理。啊哈,他们点击!他们的浏览器下载.tar.gz
文件。许多Windows用户甚至无法打开它,但是如果他们坚持不懈,他们最终可能会提取它,然后运行setup.py
并最终在Google的帮助下运行setup.py install
。有些人会放弃并重新发明轮子。
当然,所有这些都是错误的。安装软件包的最简单方法是使用Pip命令。但是PyPI甚至没有提到Pip。相反,它引导他们走下了一条古老而乏味的道路。
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。
面对“ 包含电池 ”的座右铭,直到2014年Python一直没有包装管理器发货。
在Pip之前,事实上的标准是一个命令 easy_install
。真是太糟糕了。was no命令用于卸载软件包。
点子是一个巨大的进步。它具有Ruby's Gem的大多数功能。不幸的是,直到最近,Pip一直很难安装。实际上,该问题仍然是Stack Overflow上最重要的Python问题:“ 如何在Windows上安装pip? ”
gem install X
似乎可以在所有平台上使用。那么,对于在Windows上需要C代码编译的gem,他们如何管理呢?
Python包索引(PyPI)似乎是标准的:
pip install MyProject
pip install --upgrade MyProject
pip install MyProject==1.0
您可以如下安装软件包管理器:
curl -O http://python-distribute.org/distribute_setup.py
python distribute_setup.py
easy_install pip
参考文献:
只是为了形成对比,还有一点。
作为Ruby和Perl开发人员和学习Python的人,我还没有发现easy_install或pip等同于RubyGems或CPAN。
当开发人员更新模块时,我倾向于使我的开发系统运行最新版本的模块,并将生产系统冻结为固定版本。RubyGems和CPAN都可以通过列出可用的模块轻松地找到模块,然后进行安装,然后根据需要单独或批量更新。
easy_install和pip使得安装模块变得容易,一旦我通过浏览器搜索找到了它,或者通过其他方法了解了它,但是它们不会告诉我有什么可用。我可以明确命名要更新的模块,但是这些应用程序不会告诉我已更新的内容,也不会在需要时批量更新所有内容。
因此,pip和easy_install中提供了基本功能,但是我希望看到一些缺少的功能,这些功能使它们更友好,更易于使用,并且与CPAN和RubyGems相当。
至少有两个easy_install及其后继pip。
至少从2014年下半年开始,应该考虑使用conda软件包管理器的Continuum Analytics的Anaconda Python发行版。一键下载即可解决一般人们在使用Python时遇到的大多数严重问题(管理不同的Python版本,更新Python版本,软件包管理,虚拟环境,Windows / Mac兼容性)。
它使您无需更改系统就可以使用Python完成几乎所有您想做的事情。我的下一个首选解决方案是pip + virtualenv,但是您要么必须将virtualenv安装到系统Python中(并且系统Python可能不是您想要的版本),要么从源代码构建。Anaconda只需单击一个按钮即可完成整个过程,并添加了许多其他功能。
那将是easy_install。
easy_install
,请先检查日期。差不多7年前提出的时候这是正确的建议。我不认为我们的答题者会定期重新访问此内容以进行更新,因此拒绝投票是很愚蠢的。
它称为setuptools。您可以使用“ easy_install”命令运行它。
您可以在http://pypi.python.org/中找到该目录
我在这里没有在其他答案中提到MacPorts或Homebrew,但是由于我确实在Stack Overflow的其他地方看到了有关相关问题的提及,因此我会自己添加0.02美元,许多人似乎认为MacPorts不仅是一个软件包软件包管理器(到目前为止,它们列出了16311个软件包/端口,2931个匹配“ python”,尽管仅适用于Mac),但也可以作为Python软件包/模块的不错的(也许更好)的软件包管理器:
“ ... Mac python开发人员使用什么方法来管理其模块?”
“ Mac(与Linux不同)没有软件包管理器,但是您可以安装几个流行的软件包管理器。Macports ...”
我仍在争论是否自己使用MacPorts,但目前我正朝着这个方向发展。
pip install <your_favorite_package>
在Windows上,安装http://chocolatey.org/,然后
choco install python
用更新的PATH打开一个新的cmd窗口。接下来,做
choco install pip
之后,您可以
pip install pyside
pip install ipython
...
由于此处没有人提到pipenv,因此我想描述一下我的观点,为什么每个人都应该使用它来管理python软件包。
正如@ColonelPanic所提到的,Python包索引以及pip和virtualenv也存在多个问题。
Pipenv使用pip解决了大多数问题,并且还提供了其他功能。
Pipenv旨在取代pip和virtualenv,这意味着Pipenv将自动为每个项目创建一个单独的虚拟环境,从而避免不同项目的不同python版本/软件包版本之间发生冲突。
如果您以前从事过python项目,您将意识到这些功能使管理软件包变得更加容易。
check
检查安全漏洞,并断言当前环境已满足PEP 508要求。(我认为这是一个很大的功能,尤其是在此之后-PyPi上的恶意软件包)graph
将显示安装的依赖关系的依赖关系图。您可以在此处阅读更多内容-Pipenv。
您可以在此处找到安装文档
PS:如果您喜欢处理Python Package 请求,您将很高兴知道pipenv由同一位开发人员Kenneth Reitz
诗歌是您要寻找的。它负责依赖管理,虚拟环境和运行。