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

2023-11-29

Python 是否有包/模块管理系统,类似于 Ruby 有 ruby​​gems,您可以这样做gem install packagename?

On 安装Python模块,我只看到引用python setup.py install,但这需要您先找到该包。


最新进展

2014年3月: 好消息!Python 3.4与 Pip 一起发货。 Pip 长期以来一直是 Python 事实上的标准包管理器。您可以安装一套像这样:

pip install httpie

哇嘿!这是所有 Python 版本中最好的特性。它使每个人都可以访问社区丰富的图书馆。新手不再因为设置困难而被排除在使用社区库之外。

However,Python 打包体验仍然存在许多突出的问题。累积起来,它们使得 Python 对于新手来说非常不受欢迎。此外,长期的忽视(即从 Python 2.0 到 Python 3.3 14 年没有附带包管理器)也对社区造成了损害。我在下面描述了两者。

突出的挫败感

重要的是要了解,虽然经验丰富的用户能够解决这些挫折,但它们对于 Python 新手来说是巨大的障碍。事实上,困难和普遍的用户不友好可能会阻止他们中的许多人。

PyPI网站反有帮助

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

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

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

您将看到 RubyGems 和 Npm 页面都以该包的一行描述开始,然后是如何安装它的大量友好说明。

与此同时,那些天真地浏览 PyPI 的不幸的 Python 用户有祸了。在https://pypi.python.org/pypi/simplejson/,他们会发现没有这样有用的说明。然而,有一个大的绿色“下载”链接。遵循它并不是没有道理的。啊哈,他们点击了!他们的浏览器下载一个.tar.gz文件。许多 Windows 用户甚至无法打开它,但如果他们坚持下去,他们最终可能会解压它,然后运行setup.py最终在谷歌的帮助下setup.py install。有些人会放弃并重新发明轮子。

当然,这一切都是错误的。这easiest安装软件包的方法是使用 Pip 命令。但 PyPI 甚至没有提到 Pip。相反,它引导他们走上了一条古老而乏味的道路。

错误:无法找到 vcvarsall.bat

Numpy 是 Python 最受欢迎的库之一。尝试使用 Pip 安装它,您会收到以下神秘的错误消息:

错误:无法找到 vcvarsall.bat

尝试解决这个问题是 Stack Overflow 上最受欢迎的问题之一:“错误:找不到 vcvarsall.bat"

很少有人成功。

为了进行比较,在相同的情况下,Ruby 会打印此消息,其中解释了发生的情况以及如何修复它:

请更新您的 PATH 以包含构建工具或从以下位置下载 DevKithttp://rubyinstaller.org/downloads并按照以下说明进行操作http://github.com/oneclick/rubyinstaller/wiki/Development-Kit

发布包很难

Ruby 和 Nodejs 附带功能齐全的包管理器、Gem(自 2007 年起)和 Npm(自 2011 年起),并培育了以 GitHub 为中心的共享社区。 Npm 使发布包就像安装它们一样简单,它已经有了64k 包。 RubyGems 列表72k 包。古老的 Python 包索引列表only 41k.

History

迎面飞翔的“包括电池“ 座右铭是,Python 直到 2014 年才推出包管理器。

在 Pip 之前,事实上的标准是命令easy_install。不幸的是,这还不够。没有卸载软件包的命令。

Pip 是一个巨大的进步。它具有红宝石宝石的大部分特征。不幸的是,直到最近,Pip 的安装都极其困难。事实上,这个问题仍然是 Stack Overflow 上最热门的 Python 问题:“如何在 Windows 上安装 pip?"

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python 有包/模块管理系统吗? 的相关文章

  • 下载 PyQt6 的 Qt Designer 并使用 pyuic6 将 .ui 文件转换为 .py 文件

    如何下载 PyQt6 的 QtDesigner 如果没有适用于 PyQt6 的 QtDesigner 我也可以使用 PyQt5 的 QtDesigner 但是如何将此 ui 文件转换为使用 PyQt6 库而不是 PyQt5 的 py 文件
  • InterfaceError:连接已关闭(使用 django + celery + Scrapy)

    当我在 Celery 任务中使用 Scrapy 解析函数 有时可能需要 10 分钟 时 我得到了这个信息 我用 姜戈 1 6 5 django celery 3 1 16 芹菜 3 1 16 psycopg2 2 5 5 我也使用了psyc
  • 使用 openCV 对图像中的子图像进行通用检测

    免责声明 我是计算机视觉菜鸟 我看过很多关于如何在较大图像中查找特定子图像的堆栈溢出帖子 我的用例有点不同 因为我不希望它是具体的 而且我不确定如何做到这一点 如果可能的话 但我感觉应该如此 我有大量图像数据集 有时 其中一些图像是数据集的
  • 如何收集列表、字典等中重复计算的结果(或制作修改每个元素的列表的副本)?

    There are a great many existing Q A on Stack Overflow on this general theme but they are all either poor quality typical
  • 如何在 Sublime Text 2 的 OSX 终端中显示构建结果

    我刚刚从 TextMate 切换到 Sublime Text 2 我非常喜欢它 让我困扰的一件事是默认的构建结果显示在 ST2 的底部 我的程序产生一些很长的结果 显示它的理想方式 如在 TM2 中 是并排查看它们 如何在 Mac 操作系统
  • 如何在Windows上模拟socket.socketpair

    标准Python函数套接字 套接字对 https docs python org 3 library socket html socket socketpair不幸的是 它在 Windows 上不可用 从 Python 3 4 1 开始 我
  • 打破嵌套循环[重复]

    这个问题在这里已经有答案了 有没有比抛出异常更简单的方法来打破嵌套循环 在Perl https en wikipedia org wiki Perl 您可以为每个循环指定标签 并且至少继续一个外循环 for x in range 10 fo
  • Python tcl 未正确安装

    我刚刚为 python 安装了graphics py 但是当我尝试运行以下代码时 from graphics import def main win GraphWin My Circle 100 100 c Circle Point 50
  • 安装后 Anaconda 提示损坏

    我刚刚安装张量流GPU创建单独的后环境按照以下指示here https github com antoniosehk keras tensorflow windows installation 但是 安装后当我关闭提示窗口并打开新航站楼弹出
  • python 集合可以包含的值的数量是否有限制?

    我正在尝试使用 python 设置作为 mysql 表中 ids 的过滤器 python集存储了所有要过滤的id 现在大约有30000个 这个数字会随着时间的推移慢慢增长 我担心python集的最大容量 它可以包含的元素数量有限制吗 您最大
  • Pandas Dataframe 中 bool 值的条件前向填充

    问题 如何转发 fill boolTruepandas 数据框中的值 如果是当天的第一个条目 True 到一天结束时 请参阅以下示例和所需的输出 Data import pandas as pd import numpy as np df
  • Python:尝试检查有效的电话号码

    我正在尝试编写一个接受以下格式的电话号码的程序XXX XXX XXXX并将条目中的任何字母翻译为其相应的数字 现在我有了这个 如果启动不正确 它将允许您重新输入正确的数字 然后它会翻译输入的原始数字 我该如何解决 def main phon
  • 如何改变Python中特定打印字母的颜色?

    我正在尝试做一个简短的测验 并且想将错误答案显示为红色 欢迎来到我的测验 您想开始吗 是的 祝你好运 法国的首都是哪里 法国 随机答案不正确的答案 我正在尝试将其显示为红色 我的代码是 print Welcome to my Quiz be
  • Python 3 中“map”类型的对象没有 len()

    我在使用 Python 3 时遇到问题 我得到了 Python 2 7 代码 目前我正在尝试更新它 我收到错误 类型错误 map 类型的对象没有 len 在这部分 str len seed candidates 在我像这样初始化它之前 se
  • 在Python中重置生成器对象

    我有一个由多个yield 返回的生成器对象 准备调用该生成器是相当耗时的操作 这就是为什么我想多次重复使用生成器 y FunctionWithYield for x in y print x here must be something t
  • 如何在 Django 中使用并发进程记录到单个文件而不使用独占锁

    给定一个在多个服务器上同时执行的 Django 应用程序 该应用程序如何记录到单个共享日志文件 在网络共享中 而不保持该文件以独占模式永久打开 当您想要利用日志流时 这种情况适用于 Windows Azure 网站上托管的 Django 应
  • glpk.LPX 向后兼容性?

    较新版本的glpk没有LPXapi 旧包需要它 我如何使用旧包 例如COBRA http opencobra sourceforge net openCOBRA Welcome html 与较新版本的glpk 注意COBRA适用于 MATL
  • 用于运行可执行文件的python多线程进程

    我正在尝试将一个在 Windows 上运行可执行文件并管理文本输出文件的 python 脚本升级到使用多线程进程的版本 以便我可以利用多个核心 我有四个独立版本的可执行文件 每个线程都知道要访问它们 这部分工作正常 我遇到问题的地方是当它们
  • 从 Python 中的类元信息对 __init__ 函数进行类型提示

    我想做的是复制什么SQLAlchemy确实 以其DeclarativeMeta班级 有了这段代码 from sqlalchemy import Column Integer String from sqlalchemy ext declar
  • 如何使用google colab在jupyter笔记本中显示GIF?

    我正在使用 google colab 想嵌入一个 gif 有谁知道如何做到这一点 我正在使用下面的代码 它并没有在笔记本中为 gif 制作动画 我希望笔记本是交互式的 这样人们就可以看到代码的动画效果 而无需运行它 我发现很多方法在 Goo

随机推荐

  • 自定义单元格模板中带有按钮的 UI-Grid - 如何取消行选择事件?

    我正在使用 ui Grid v 3 0 1 我有一个特定列的自定义单元格模板 它在每行中显示一个按钮 我附加了一个 ng click 属性 它调用 appScope 来触发某些操作 一切都很顺利 但是 单击自定义模板按钮也会导致切换相关行的
  • 未找到基表或视图错误

    产品表 public function up Schema create product function Blueprint table table gt increments id table gt string name table
  • 使用 ionic 3 中的 Angularfire2 从 Firestore 获取集合文档的 ID

    这个问题在这里已经有答案了 我正在尝试获取集合的 id 以在离子页面中使用它 这是我的界面 export interface Item categoryOfPost string imageUrl string nameOfPost str
  • 如何使用 Python 3.x 读取和编辑 Google 电子表格?

    我知道我可以使用以下命令阅读和编辑 Google 电子表格gdata 但没有适用于 Python 3 的 gdata 版本 即使我想使用 Python 3 是否有一种 不是很复杂 的方法来编辑 Google 电子表格 我编写了一个替代方案G
  • 如何在 ffmpeg HLS 中启用 cookie

    有人知道如何在 ffmpeg 中启用 cookie 交互吗 我有一个 HLS 流 需要从服务器保存 cookie 但实际上这不会发生 你可以发送标头与 FFmpeg Linux ffmpeg i INPUT headers Cookie l
  • PyQt QLineEdit 与 QValidator

    我的项目中有一个 QLineEdit 我想在 qlineEdit 上使用验证 Create lineEdit itemValue QtWidgets QLineEdit Create objValidator QtGui QDoubleVa
  • 如何逐步安装和使用 joomla rest api

    请帮忙 我想在 joomla 2 5 中使用 REST api 我在 Github 和 techjoomla 上进行了很多搜索并花了很多天 我不明白如何安装 API 扩展或插件并使用它 即使我没有找到任何正确的文档来使用 API 以及从哪里
  • 使用 XSLT 减少 XML 输出

    如何使用 XSLT 仅从输入 xml 中选择一些 xml 标签到输出 XML 输入示例
  • 设置属性logging.pattern.console或logging.pattern.level时忽略覆盖模式

    使用 spring boot 1 3 2 我试图覆盖 application properties 文件中的 logback 模式 但无论我放入什么模式 总是会调用 spring boot jar xml 中的默认模式 我可以成功调整日志记
  • 如何在docker机器中挂载本地卷

    我正在尝试将 docker machine 与 docker compose 一起使用 文件 docker compose yml 的定义如下 web build command run web sh volumes app ports 8
  • 将标量和数组元素传递给需要数组的过程

    我有一些遗留的 Fortran 77 代码 我试图至少在不发出警告的情况下进行编译 不禁用警告 有些子例程调用会传递一个标量 而子例程需要一个数组 因为标量被用作大小为 1 的数组 所以这不会导致任何问题 但是使用英特尔编译器 如果我启用接
  • Python3、Selenium 和 Chrome 可移植

    也许有人可以帮助使用 Windows Python Selenium 以及使用 Chrome Webdriver 和 ChromePortable 我定义了一个新文件夹 c 我的项目 在此文件夹中 网络驱动程序位于 c myproject
  • 如何实现多维序列

    例如 这是每年的序列 这no增量与year no year 1 2016 2 2016 3 2016 1 2017 2 2017 4 2016 现在我已经为每年创建了序列但问题是Oracle不会在明年自动创建新的序列 另一个问题是如果我想使
  • sqlsrv_query 是否限制一个查询中可以执行的语句数量?

    我正在生成一个 SQLinsertPHP 中的语句for loop 生成的 SQL 字符串是大量单独的 SQL 语句 如下所示 INSERT INTO tbl VALUES 1 2 3 INSERT INTO tbl VALUES 4 5
  • NHibernate 如何将交叉引用表映射到包?

    我最近继承了一个包含 NHibernate 的工作项目 我对它非常陌生 必须对其中一个映射进行修改 我已阅读文档here我仍然不确定如何做到这一点 或者我的理解 术语是否正确 因此 鉴于以下表结构 我需要一个包来获取 ProjectName
  • 需要另一个帮助才能在屏幕上动态显示文本

    现在我使用 d3 js 遇到了第二个问题 我自己无法解决 我得到了一个动态数组 路径 当我点击时 其长度总是会改变 然后我在 svg 的起始位置 112 490 得到了一个 文本 变量 在你们的帮助下 我现在使用 for 循环根据控制台上的
  • 为什么当 Java 执行 Windows 批处理文件时,它们没有被处理?

    我有 2 个文件夹 每个文件夹包含数十个批处理文件 bat 包含类似于以下任一文本的批处理文件 del f q F MEDIA IMAGE99 2010 270 z 4034 123 tif gt nul del f q F MEDIA I
  • 如何解释机器学习模型的损失和准确性[关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 当我使用 Theano 或 Tensorflow 训练我的神经网络时 它们会报告每个时期的一个名为 损失 的变量 我应该如何解释这个变量 损失越高越好或越差 或者它对我的神经网络的最
  • 以安全的方式使用docker的远程API

    我正在尝试找到一种有效的方法来安全地使用 docker 远程 API 我有一个在远程主机上运行的 docker 守护进程 以及在另一台机器上运行的 docker 客户端 我需要我的解决方案不依赖于客户端 服务器操作系统 以便它与任何具有 d
  • Python 有包/模块管理系统吗?

    Python 是否有包 模块管理系统 类似于 Ruby 有 ruby gems 您可以这样做gem install packagename On 安装Python模块 我只看到引用python setup py install 但这需要您先