Python有包/模块管理系统吗?

时间:2010-03-13 00:29:18

标签: python module

Python是否有一个软件包/模块管理系统,类似于Ruby如何使用rubygems gem install packagename

Installing Python Modules 上,我只看到对python setup.py install的引用,但这需要您先找到该包。

13 个答案:

答案 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的人来说,它们是一个重大障碍。事实上,困难和一般用户不友好可能会阻止他们中的许多人。

PyPI网站反对

包管理器的每种语言都有一个官方(或准官方)存储库,供社区下载和发布包。 Python有Python包索引PyPI。 https://pypi.python.org/pypi

让我们将其页面与RubyGems和Npm(Node包管理器)的页面进行比较。

    包的{li> https://rubygems.org/gems/rails RubyGems页面rails
  1. https://www.npmjs.org/package/express包裹express
  2. 的Npm页面 包的{li> https://pypi.python.org/pypi/simplejson/ PyPI页面simplejson

    你会看到RubyGems和Npm页面都以包的单行描述开头,然后是如何安装它的大型友好说明。

    与此同时,对任何天真地浏览PyPI的不幸的Python用户都有祸了。在https://pypi.python.org/pypi/simplejson/,他们找不到有用的指示。但是,有一个很大的绿色“下载”链接。遵循它并不是不合理的。啊哈,他们点击!他们的浏览器会下载.tar.gz个文件。许多Windows用户甚至无法打开它,但如果他们坚持不懈,他们最终可能会提取它,然后运行setup.py并最终在Google setup.py install的帮助下运行。有些人会放弃并重新发明轮子..

    当然,所有这一切都是错误的。 最简单安装软件包的方法是使用Pip命令。但PyPI甚至没有提到皮普。相反,它引导他们走上了古老而繁琐的道路。

    错误:无法找到vcvarsall.bat

    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。这是非常不足够的。没有卸载软件包的命令。

    皮普是一个巨大的进步。它拥有Ruby's Gem的大多数功能。不幸的是,Pip直到最近才讽刺地难以安装。实际上,问题仍然是Stack Overflow上的一个顶级Python问题:“How do I install pip on Windows?

答案 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”命令运行它。

您可以在http://pypi.python.org/

找到目录

答案 8 :(得分:4)

我在这里没有看到其他答案中提到的MacPortsHomebrew,但是因为我确实在Stack Overflow上的其他地方看到了相关问题,我会加上我自己的0.02美元许多人似乎认为MacPorts不仅仅是一般的包裹管理器(截至今天他们列出了16311个包/端口,2931匹配“python”,虽然只适用于Mac),但也是一个不错的(也许更好的Python包/模块的包管理器:

问题

"...what is the method that Mac python developers use to manage their modules?"

答案

SciPy的

"Macs (unlike Linux) don’t come with a package manager, but there are a couple of popular package managers you can install. Macports..."

我仍然在讨论是否自己使用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功能

Pipenv旨在取代pip和virtualenv,这意味着pipenv将自动为每个项目创建一个单独的虚拟环境,从而避免不同项目的不同python版本/包版本之间的冲突。

  • 启用真正确定的构建,同时轻松指定您想要的内容。
  • 生成并检查锁定依赖项的文件哈希值。
  • 如果pyenv可用,则自动安装所需的Pythons。
  • 通过查找Pip文件,以递归方式自动查找项目。
  • 自动生成Pip文件(如果不存在)。
  • 在标准位置自动创建virtualenv。
  • 在取消/安装Pip文件时自动添加/删除软件包。
  • 自动加载.env文件(如果存在)。

如果你以前曾经在python项目上工作,你会发现这些功能使得管理包更容易。

其他命令

  • check检查安全漏洞并断言当前环境正在满足PEP 508要求。 (我认为这是一个很棒的功能,特别是在此之后 - Malicious packages on PyPi
  • graph将显示已安装依赖项的依赖关系图。

您可以在此处阅读更多相关信息 - Pipenv

安装

您可以找到安装文档here

PS:如果你喜欢使用Python包requests,你会很高兴知道 pipenv 是由同一个开发人员Kenneth Reitz

答案 11 :(得分:0)

2019年poetry是您要寻找的软件包和依赖项管理器。

https://github.com/sdispater/poetry#why

它是现代,简单和可靠的。

答案 12 :(得分:0)

Poetry是您要寻找的。它负责依赖管理,虚拟环境和运行。