是否可以通过 Pip 安装部分 Python 包?

2024-03-30

我有一个被许多项目使用的内部实用程序库。从实用程序库中提取的代码中的项目之间有相当多的重叠,但随着库的增长,任何单个项目获得的不会使用的额外内容也会增加。如果该库仅包含 python,那么这不会成为问题,但该库也捆绑在二进制文件中。

Example-

psycopg2在实用程序库中的少数地方使用,但并非所有项目都需要数据库访问。由于开发环境与生产环境不同,实用程序库还包括用于生产环境的 psycopg2 二进制文件。

随着 openssl 库、pandas、numpy、scipy、pyarrow 等的不断增长,结果是可能需要数据库访问的小型 50 行单一用途脚本被捆绑到 100mb+ 的部署包中。

因此,我想做的是将实用程序库分割成多个部分,下游项目可以选择要拉入哪些部分,但将实用程序库代码保留在一个易于管理的位置。这样,这个小型单一用途应用程序就可以选择导入internal-util@core, internal-util@db并且不包括internal-util@numpy and internal-util@openssl

我所描述的事情可以做到吗?


据我所知,不是直接的。pip完全安装或根本不安装软件包。

但是,如果您在包中注意如何导入可能需要的内容psycopg2 or someotherlargebinarything,你可以使用extras_require https://setuptools.readthedocs.io/en/latest/setuptools.html#declaring-extras功能,从而让包的用户选择他们想要引入的依赖项:

setup(
  # ...
  name='myawesometoolbelt',
  extras_require={
    'db': ['psycopg2'],
    'math': ['numpy'],
  },
)

然后,在你的requirements.txt, or pip调用,

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

是否可以通过 Pip 安装部分 Python 包? 的相关文章

随机推荐

  • 在 VueJS 中取消选中 CheckBox 及其标签

    我试图取消选中在 VueJs 中使用其标签选中的复选框 DEMO new Vue el app data checkedNames checkedName true methods uncheck function this checked
  • SqlCommandBuilder 如何执行其操作以及如何阻止 ReSharper 删除它的建议?

    我不明白怎么办SqlCommandBuilder http msdn microsoft com en us library system data sqlclient sqlcommandbuilder aspx做它的事 我有以下代码 p
  • JPA 2.1 ConstructorResult 导致 ClassCastException

    结果集中的对象被转换为 对象 而不是我在 SQLResultSetMapping 对象中指定的对象 我正在尝试获取 ConstructorResult 的句柄 并创建了一个包含简单联接的查询 并尝试获取结果集并循环打印它 以确保它是正确的
  • 我如何检查 base64 字符串是否是文件(什么类型?)?

    我参加了 Spentalkux 挑战https 2020 ractf co uk https 2020 ractf co uk 这是我第一次参加CTF挑战 所以我解决了https github com W3rni0 RACTF 2020 b
  • MVC2 --> MVC3 升级

    今天MVC3发布了 我想问一下是否有人在从MVC2升级到MVC3 不改变视图中的任何内容 的过程中遇到过问题 我目前正在使用 EF4 Telerik 扩展 我应该升级 还是应该等待 我目前负责的项目的首席开发人员安装并升级了 MVC2 到
  • Rvest:获取节点文本而不是其子节点的文本

    方法html text 来自 R 包 rvest 连接节点的文本和它的所有孩子 我想提取只有父亲的文字 对于以下示例 html text gives 你好再见 我想得到只是GOODBYE 我怎么才能得到它 div class joke di
  • 如果所有子级都满足条件,则选择父级

    我的表格设置如下 Parent id Child id parent id x y 我想找到父母 或者不同的parent id 如果allChild 中包含给定parent id 的行满足涉及x 和y 的条件 在我的例子中x y 例如 Pa
  • GPS 坐标(以度为单位)来计算距离

    在iPhone上 我以十进制度数获取用户的位置 例如 纬度39 470920和经度 0 373192 也就是A点 我需要用另一个 GPS 坐标 同样以十进制表示 B 点创建一条线 然后 计算从 A 到 B 的线与另一个点 C 之间的距离 垂
  • 如何编译jade模板文件来获取字符串?

    我的玉模板文件中有一个视图逻辑 如何将模型传递给j ade并获取html以通过电子邮件进一步发送 您可以尝试以下操作 var jade require jade fs require fs fs readFile template jade
  • 在 UIImageView 之上绘图以使图像透明

    我正在开发一个 iPhone 应用程序 其中当用户在图像上移动手指时 我需要通过将其 alpha 级别设置为 0 来使图像的一部分透明 基本上 如果您碰巧知道应用程序商店应用程序 iSteam 用户应该能够在顶部图像上移动手指 这将使背景图
  • Select2 多重选择 - 以编程方式取消选择/取消选择项目

    我有一个 select2 列表和一组外部按钮 我想单击外部按钮并取消选择 select2 列表中的相应项目 我知道我可以使用命令从外部值进行项目选择 external btn click function select2 val CA tr
  • 如何使用DexClassLoader从aar文件动态加载类

    我已经成功地通过以下方式从 dex 文件动态加载类 enter code here File file getDir dex 0 DexClassLoader dexClassLoader new DexClassLoader data d
  • Jenkins 声明性管道:如何重命名“声明性:后操作”步骤?

    我有一个声明式管道 如下所示 pipeline stages post success failure 它导致最后一步的创建 称为 声明性 后置操作 Q 如何重命名 声明性 操作后 步骤 我想要一个有意义的名称 例如 发送电子邮件通知 UP
  • UIButton 上的 iOS NSAttributedString

    我在用着iOS 6 所以属性字符串应该很容易使用 对吗 嗯 没那么多 我想做的事 使用自定义子类UIButton 它没有做任何定制的事情titleLabel 我想要一个多行属性标题 即 第一行全部大写 我意识到这不是属性的一部分 Bolde
  • git diff - 仅显示远程上的新内容

    我在 github 上有一个本地存储库和一个远程存储库 由于商业原因 它们不同步 我已经在我保留的本地上做了很多工作 现在我手动将远程的所有新内容添加到我的本地 没有分支机构 当我使用该命令时 git diff color master o
  • 向 JsonOutputFormatter 构造函数提供 ArrayPool 对象

    从 net RC2 升级到 RTM 后 我发现我需要向派生自 ArrayPool 的 JsonOutputFormatter 构造函数提供一个参数 我如何获得这个对象 我手动新建 JsonOutputFormatter 因为我需要配置 Re
  • Quartz API 和 Joda Time API 之间有什么关系吗?

    是否可以在 JodaTime 中创建一个日期 然后让 Quartz 使用 JodaTime 对象安排作业 我们可以给 Quartz API 一个Period jodaPeriod 以便在一天中的特定时间段内运行任务吗 这两个 API 是否相
  • C++ char 数组输入 - 解释

    我有一个练习 编写一个程序 接收一个句子 然后从每个单词中取出第一个字母并创建一个新单词 我的代码 int main char str new char 50 for int i 0 i lt 50 i str i NULL cin gt
  • 预提交钩子文件暂存以进行提交

    如果您在 Git 中有一个用于创建 或修改 文件的预提交挂钩 那么该文件是否需要暂存才能提交 例如 如果我有一个预提交挂钩来创建某些代码的缩小版本 我是否需要git add那个缩小版本可以包含在提交中吗 是的 您必须自己将文件添加到索引中
  • 是否可以通过 Pip 安装部分 Python 包?

    我有一个被许多项目使用的内部实用程序库 从实用程序库中提取的代码中的项目之间有相当多的重叠 但随着库的增长 任何单个项目获得的不会使用的额外内容也会增加 如果该库仅包含 python 那么这不会成为问题 但该库也捆绑在二进制文件中 Exam