相当于“pip”的“package.json”和“package-lock.json”

2024-02-13

包管理器JavaScript like npm and yarn use a package.json指定“顶级”依赖项,并创建一个锁定文件 https://docs.npmjs.com/files/package-locks跟踪特定版本all包(即顶级and结果安装的子级依赖项)。

除此之外package.json允许我们区分顶级依赖关系的类型,例如生产 and 发展.

For Python,另一方面,我们有pip。我想pip相当于一个lock-file 将是以下结果pip freeze > requirements.txt.

但是,如果您只维护这一个requirements.txt文件中,很难区分顶级和子级依赖关系(例如,您需要pipdeptree -r找出这些)。如果您想删除或更改顶级依赖项,这可能会非常痛苦,因为很容易留下孤立的包(据我所知,pip 不删除子依赖项 https://stackoverflow.com/a/10284948当你pip uninstall一套)。

现在,我想知道:是否有一些约定来处理不同类型的这些requirements文件并区分顶级和子级依赖关系pip?

例如,我可以想象有一个requirements-prod.txt其中仅包含生产环境的顶级要求,作为(简化的)等价物package.json, and a requirements-prod.lock,其中包含输出pip freeze,并充当我的lock-文件。另外我可以有一个requirements-dev.txt用于开发依赖项等等。

我想知道这是否是可行的方法,或者是否有更好的方法。

附注可以问同样的问题conda's environment.yml.


今天至少有三个不错的选择:

  1. Poetry https://python-poetry.org/ uses pyproject.toml and poetry.lock files https://python-poetry.org/docs/basic-usage/#installing-with-poetrylock,与此大致相同package.json和锁定文件在 JavaScript 世界中工作。

    这是我现在的首选解决方案。

  2. Pipenv https://github.com/pypa/pipenv uses Pipfile and Pipfile.lock https://github.com/pypa/pipfile,也很像您描述的 JavaScript 文件。

Poetry 和 Pipenv 所做的不仅仅是依赖管理。他们还可以开箱即用地为您的项目创建和维护虚拟环境。

  1. pip-tools https://github.com/jazzband/pip-tools提供pip-compile and pip-sync命令。这里,requirements.in列出您的直接依赖项,通常具有宽松的版本约束和pip-compile产生锁定requirements.txt文件来自你的.in files.

    这曾经是我的首选解决方案。它是向后兼容的(生成的requirements.txt可以通过处理pip)和pip-sync工具确保 virtualenv 与锁定版本完全匹配,删除“锁定”文件中没有的内容。

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

相当于“pip”的“package.json”和“package-lock.json” 的相关文章

  • pydev 断点不起作用

    我正在使用 python 2 7 2 sqlalchemy 0 7 unittest eclipse 3 7 2 和 pydev 2 4 开发一个项目 我在 python 文件 单元测 试文件 中设置断点 但它们被完全忽略 之前 在某些时候
  • Python CSV Writer 在文件末尾留下一个空行

    以下代码在 txt 文件末尾留下一个空白行 我怎样才能不让 writerows 不终止最后一行 with open fname wb as myFile Start the CSV Writer wr csv writer myFile d
  • 如何使用python登录页面,该页面需要服务器在第一次请求时响应会话ID?

    我正在编写一个脚本来登录某个网页 我使用 request 和 request session 模块来实现此目的 在使用登录参数的第一个请求时 服务器响应一个会话 ID 如何设置该会话 ID 以进一步登录到同一页面 url some url
  • Pytorch - 推断线性层 in_features

    我正在构建一个玩具模型来获取一些图像并进行分类 我的模型看起来像 conv2d gt pool gt conv2d gt linear gt linear 我的问题是 当我们创建模型时 我们必须计算第一个线性层的大小in features基
  • 在 Django 中使用 prefetch_lated 连接 ManyToMany 字段

    我可能遗漏了一些明显的东西 但我在连接 ManyToMany 字段以在 Django 应用程序中工作时遇到问题 我有两个模型 class Area models Model name CharField class Role models
  • Keras model.summary() 结果 - 了解参数数量

    我有一个简单的神经网络模型 用于使用 Keras Theano 后端 从用 python 编写的 28x28px 图像中检测手写数字 model0 Sequential number of epochs to train for nb ep
  • Huggingface 变形金刚模块未被 anaconda 识别

    我正在使用 Anaconda python 3 7 Windows 10 我尝试通过安装变压器https huggingface co transformers https huggingface co transformers 在我的环境
  • 使用 Matplotlib 的范围绘制图像的 3D 轮廓

    正如我所介绍的here https stackoverflow com questions 18792624 fits image input to a range in plot python 在二维中 我想知道如何 缩放 要绘制到绘图中
  • Tensorflow 训练期间 GPU 使用率非常低

    我正在尝试为 10 类图像分类任务训练一个简单的多层感知器 这是 Udacity 深度学习课程作业的一部分 更准确地说 任务是对各种字体呈现的字母进行分类 数据集称为 notMNIST 我最终得到的代码看起来相当简单 但无论如何我在训练期间
  • Pygooglevoice登录错误

    另一个人问了这个问题 但没有回复 所以我再问一遍 我正在尝试使用 pygooglevoice API 但是当我运行 SMS py 示例脚本时 它给了我一个登录错误 我已经安装了 Enthought python 我想也许我还需要安装其他东西
  • 是否可以在 Jupyter 笔记本中显示控制台?

    我希望能够使用 Jupyter 笔记本中的控制台在环境中进行摆弄 添加额外的单元格意味着我总是必须滚动到最底部或在我想要 类似控制台 文本字段的任何地方创建新单元格 是否可以有一个永久的控制台窗口 例如在窗口底部 Thanks 您可以启动连
  • 进行异步调用时,“yield”在龙卷风中如何工作?

    最近我在学习龙卷风简介 我遇到了以下代码 class IndexHandler tornado web RequestHandler tornado web asynchronous tornado gen engine def get s
  • 如何打印和显示子进程 stdout 和 stderr 输出而不失真?

    也许有人可以帮助我解决这个问题 我在 SO 上看到了许多与此类似的问题 但没有一个问题同时处理标准输出和标准错误 也没有处理像我这样的情况 因此出现了这个新问题 我有一个 python 函数 它打开一个子进程 等待它完成 然后输出返回代码以
  • 如何使用 selenium 获取 javascript 结果?

    我有以下代码 from selenium import selenium selenium selenium localhost 4444 chrome http some site com selenium start sel selen
  • 枚举上的 random.choice

    我想用random choice on an Enum I tried class Foo Enum a 0 b 1 c 2 bar random choice Foo 但是这段代码失败了KeyError 我怎样才能随机选择一个成员Enum
  • 如何使用资源模块来衡量函数的运行时间?

    我想使用Python代码测量函数的CPU运行时间和挂钟运行时间 此处建议资源模块 如何以 Python 代码 不是从终端 的形式分别测量函数的 CPU 运行时间和挂钟运行时间 https stackoverflow com q 192046
  • python 相当于 sed

    有没有一种方法 无需双循环即可完成以下 sed 命令的操作 Input Time Banana spinach turkey sed i Banana s Toothpaste file Output Time BananaToothpas
  • Python Web 编程的不同方法的优缺点

    我想使用 Python 编写一些服务器端脚本 但我对这样做的方法有点迷失了 它从 DIY CGI 方法开始 似乎以一些相当强大的框架结束 这些框架基本上可以自己完成所有工作 中间有很多东西 比如web py http webpy org P
  • 真实值与预测值的降维可视化

    我有一个数据框 如下所示 label predicted F1 F2 F3 F40 major minor 2 1 4 major major 1 0 10 minor patch 4 3 23 major patch 2 1 11 min
  • IOError:在 Linux 上的 ReportLab 中使用 matplotlib PNG 时“解码器 zip 不可用”,适用于 Windows

    我正在使用 ReportLab 打印 matplotlib 生成的图表 我可以在我的 Windows 开发机器上毫无问题地执行此操作 然而 当我部署到 Ubuntu 服务器时 渲染失败并出现所述错误 我假设我缺少一个 Python 模块 但

随机推荐

  • Jenkins Windows Slave 忽略本地 Git 设置

    我已经将 Windows Jenkins 从机设置为 Unix Jenkins 主机 我正在运行 Windows 8 1 msysgit 1 9 5 和 Jenkins 1 616 当检查路径 文件名超过 255 个字符的存储库时 我收到
  • 如何使用 C# 将浏览文件按钮添加到 Windows 窗体

    我想在单击 浏览 按钮时选择本地硬盘上的文件 我不知道如何使用OpenFileDialog控制 谁能帮我 这些链接通过示例进行了解释 http dotnetperls com openfiledialog http dotnetperls
  • 无法加载资源:net::ERR_CERT_AUTHORITY_INVALID

    我正在通过 https 实现 Node js 脚本 Node js const options key fs readFileSync private key cert fs readFileSync cert crt This is ne
  • 使用 CSS/HTML 更改悬停时的图像

    我遇到这个问题 我已设置一个图像以在鼠标悬停时显示另一个图像 但是第一个图像仍然出现 并且新图像不会更改高度和宽度并与另一个图像重叠 我对 HTML CSS 还很陌生 所以我可能错过了一些简单的东西 这是代码 img src Library
  • VB.Net 将值传递给另一种形式

    我想知道如何将值从 form1 传递到另一个表单的公共子 问题是它说 在这种情况下无法访问 因为它是 私人 我尝试将 Form 1 Private Sub 更改为 Public Sub 但仍然存在相同的错误 我应该如何让它发挥作用 Publ
  • 如何使用 angular-cli (6.x) 创建 mono-repo 项目结构

    我想使用 angular cli 生成一个新的工作区 目前执行此操作的唯一方法是运行 ng new asdf cd asdf ng g application whatever 但随后所有的src 文件仍然存在 以及现在存储不一致的项目的原
  • JPA @Entity继承

    我一直在研究 JPA Hibernate Entity继承有一段时间了 似乎找不到任何可以解决我想要实现的目标的东西 基本上我希望能够定义一个 Entity根据需要包含所有列和表映射 然后我希望能够延长 Entity在许多不同的地点 有不同
  • 通过 WinAPI 确定 Intel HD 显卡版本

    因此 我尝试通过 WinAPI 函数获取有关显卡的信息 但有一个关于如何获取确切的卡信息的问题 我已经编写了调用 EnumDisplayDevices 的代码 并通过我的调用收到了 DeviceString Intel R HD Graph
  • C 宏,求两个数中的最小值

    我想用 define 创建一个简单的宏来返回两个数字中较小的一个 我怎样才能在 C 中做到这一点 提出一些想法 看看是否可以让它变得更加混乱 通常 define min a b a lt b a b 请注意 这会评估最小值两次 这是灾难的原
  • Python 或 C/C++ 中的 RTSP 库?

    我正在尝试寻找任何适用于 Python 或 C C 的 RTSP 流媒体库 如果没有 还有其他实时流解决方案吗 在 Python 或 C C 中实现 RTSP 有多容易或困难以及从哪里开始 try live555 http www live
  • 具有多重索引的 Pandas 划分 (.div)

    我有类似的东西 df pd DataFrame np random randint 2 10 size 5 2 df index pd MultiIndex from tuples 1 A 2 A 4 B 5 B 8 B df index
  • TransformerFactory - 避免网络查找来验证 DTD

    我需要为 XML 文档的离线转换进行编程 当使用以下命令加载原始 XML 文件时 我已经能够停止 DTD 网络查找 DocumentBuilderFactory factory factory DocumentBuilderFactory
  • 使用 libcurl 而不使用 dll

    我正在使用 Microsoft Visual C 2010 我需要制作一个不需要 libcurl dll 的应用程序 我在预处理器指令中定义 CURL STATICLIB 并链接到 libcurl lib libcurl static li
  • Nivo 滑块 + php

    我为网站创建了一个自定义 cms 并尝试使 nivo 滑块与我的数据库配合使用 但我的 while 循环出现问题 我只将图像的名称存储在数据库中 而图像本身存储在文件夹中 图像可以正常工作 但它们显示在实际幻灯片的上方 而实际的幻灯片已损坏
  • 如何使用 php 覆盖 Apache keep-alive 标头?

    在我的 httpd conf 中有 KeepAliveTimeout 1 我正在尝试覆盖 Apache KeepAliveTimeout 设置singlephp 脚本 不在整个服务器中 所以我有一个 php 脚本 header Keep A
  • 为什么使用“youtube.com/v”的 YouTube 视频无法加载

    请查阅这一页 http www islandcricket lk videos sri lanka cricket it feels great mathews talks about test series victory against
  • PHP shell_exec - 如果连接关闭如何终止进程?

    我有一个可用的 php 脚本 使用 shell exec 来执行一个外部程序 大约需要 30 秒才能完成 问题是 如果用户关闭浏览器或由于某种原因关闭连接 则使用 shell exec 执行的程序将继续运行 因为它的输出无法再发送给用户 有
  • 将 Qt 与 Visual Studio Code 结合使用 (Windows)

    安装了以下内容 Visual Studio 代码 1 45 1 Visual Studio 2019 Community 为了使用 MSVCcl exe编译器 Qt 5 15 0 安装到 C Qt Visual Studio Code运行后
  • Ping 与“连接”到远程服务器[关闭]

    Closed 这个问题是与编程或软件开发无关 help closed questions 目前不接受答案 什么情况下会无法使用以下命令 ping 通远程服务器ping命令 但仍然能够通过其他方式连接到它 只要它仍然是 TCP IP ping
  • 相当于“pip”的“package.json”和“package-lock.json”

    包管理器JavaScript like npm and yarn use a package json指定 顶级 依赖项 并创建一个锁定文件 https docs npmjs com files package locks跟踪特定版本all