Python是否有一个软件包/模块管理系统,类似于Ruby如何使用rubygems gem install packagename
?
在 Installing Python Modules 上,我只看到对python setup.py install
的引用,但这需要您先找到该包。
答案 0 :(得分:209)
2014年3月:好消息! Python 3.4随Pip一起发货。 Pip一直是Python事实上的标准包管理器。您可以像这样安装a package:
pip install httpie
Wahey!这是任何Python版本的最佳功能。它使每个人都可以访问社区丰富的图书馆。由于设置难度过大,新手不再被排除在使用社区库之外。
然而,Python包装体验仍然存在许多令人沮丧的挫败感。累积起来,他们让Python对新手来说非常不受欢迎。此外,长期忽视的历史(即,从Python 2.0到Python 3.3没有使用包管理器14年)对社区造成了损害。我在下面描述。
重要的是要理解,虽然有经验的用户能够解决这些挫败感,但对于刚接触Python的人来说,它们是一个重大障碍。事实上,困难和一般用户不友好可能会阻止他们中的许多人。
包管理器的每种语言都有一个官方(或准官方)存储库,供社区下载和发布包。 Python有Python包索引PyPI。 https://pypi.python.org/pypi
让我们将其页面与RubyGems和Npm(Node包管理器)的页面进行比较。
rails
express
simplejson
醇>
你会看到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上最受欢迎的问题之一:“error: Unable to find 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使publishing packages像安装一样简单,它已经64k packages。 RubyGems列出了72k packages。古老的Python包索引列出only 41k。
面对“batteries included”的座右铭,Python在2014年之前没有包经理。
直到Pip,事实上的标准是命令easy_install
。这是非常不足够的。没有卸载软件包的命令。
答案 1 :(得分:64)
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
参考文献:
答案 2 :(得分:63)
只是为了提供对比,还有pip。
答案 3 :(得分:21)
作为Ruby和Perl开发人员和学习Python人员,我没有发现easy_install或pip等同于RubyGems或CPAN。
我倾向于让开发系统在开发人员更新时运行最新版本的模块,并在设置版本中冻结我的生产系统。 RubyGems和CPAN都可以通过列出可用的内容轻松找到模块,然后安装并稍后在需要时单独或批量更新模块。
easy_install和pip可以轻松安装模块ONCE我通过浏览器搜索找到它或通过其他方式了解它,但它们不会告诉我什么是可用的。我可以明确地命名要更新的模块,但应用程序不会告诉我更新的内容,也不会批量更新所有内容。
所以,pip和easy_install中的基本功能都存在,但是我希望看到这些功能不会让它们变得更友好,更易于使用,并且与CPAN和RubyGems相同。
答案 4 :(得分:13)
至少有两个,easy_install及其后继者pip。
答案 5 :(得分:11)
截至2014年底,应考虑使用Continuum Analytics' Anaconda包管理器进行conda Python分发。它解决了一般人们遇到的大多数严重问题(管理不同的Python版本,更新Python版本,软件包管理,虚拟环境,Windows / Mac兼容性)。
它使您可以使用Python完成您想要的所有操作,而无需更改系统。我的下一个首选解决方案是pip + virtualenv,但您必须将virtualenv安装到您的系统Python中(并且您的系统Python可能不是您想要的版本)或build from source。 Anaconda只需点击一下按钮就可以完成整个过程,并添加一些其他功能。
答案 6 :(得分:6)
那是easy_install。
答案 7 :(得分:6)
它叫做setuptools。您可以使用“easy_install”命令运行它。
找到目录答案 8 :(得分:4)
我在这里没有看到其他答案中提到的MacPorts或Homebrew,但是因为我确实在Stack Overflow上的其他地方看到了相关问题,我会加上我自己的0.02美元许多人似乎认为MacPorts不仅仅是一般的包裹管理器(截至今天他们列出了16311个包/端口,2931匹配“python”,虽然只适用于Mac),但也是一个不错的(也许更好的Python包/模块的包管理器:
"...what is the method that Mac python developers use to manage their modules?"
我仍然在讨论是否自己使用MacPorts,但此刻我正倾向于那个方向。
答案 9 :(得分:4)
在Windows上安装http://chocolatey.org/然后
choco install python
使用更新的PATH打开一个新的cmd窗口。接下来,做
choco install pip
之后你可以
pip install pyside
pip install ipython
...
答案 10 :(得分:3)
由于此处没有人提及 pipenv ,我想描述一下为什么每个人都应该用它来管理python包。
正如@ColonelPanic所提到的,Python Package Index以及点和virtualenv存在一些问题。
Pipenv 解决了pip的大部分问题,并提供了其他功能。
Pipenv旨在取代pip和virtualenv,这意味着pipenv将自动为每个项目创建一个单独的虚拟环境,从而避免不同项目的不同python版本/包版本之间的冲突。
如果你以前曾经在python项目上工作,你会发现这些功能使得管理包更容易。
check
检查安全漏洞并断言当前环境正在满足PEP 508要求。 (我认为这是一个很棒的功能,特别是在此之后 - Malicious packages on PyPi )graph
将显示已安装依赖项的依赖关系图。您可以在此处阅读更多相关信息 - Pipenv。
您可以找到安装文档here
PS:如果你喜欢使用Python包requests,你会很高兴知道 pipenv 是由同一个开发人员Kenneth Reitz
答案 11 :(得分:0)
答案 12 :(得分:0)
Poetry是您要寻找的。它负责依赖管理,虚拟环境和运行。