有没有一个工具可以删除Python中不使用的函数?

2024-02-12

我有以下情况:我正在开发几个使用我编写的库模块的项目。库模块包含多个类和函数。在每个项目中,都会使用库代码的某些子集。

但是,当我为其他用户发布项目时,我只想泄露该项目使用的代码而不是整个模块。这意味着对于给定的项目,我希望从库代码中删除未使用的库函数(即创建一个新的精简库)。有没有什么工具可以自动执行此操作?

EDIT

一些澄清/答复:

  1. 关于“一般情况下您不应该这样做”的答复:最重要的是,在实践中,在发布项目之前,我会手动检查库模块并删除未使用的代码。由于我们都是程序员,我们知道,当您可以轻松地向计算机解释如何执行某些操作时,就没有理由手动执行某些操作。所以实际上,编写这样的程序是可能的,甚至应该不会太困难(是的,它可能不是超级通用)。我的问题是,在我开始考虑自己实现它之前,是否有人知道这样的工具是否存在。此外,欢迎任何有关实施此操作的想法。
  2. 我不想简单地隐藏我的所有代码。如果我想这样做,我可能不会使用 Python。事实上,我想发布源代码,但仅限于与相关项目相关的代码。
  3. 关于“你受到法律保护”的评论:在我的具体情况下,法律/许可保护对我没有帮助。而且,这里的问题比一些窃取代码的问题更普遍。例如,可能是为了清楚起见:如果有人需要使用/开发代码,您不希望包含数十个不相关的函数。

我给你的第一个建议是用更强的模块化设计你的代码,这样你就可以拥有你想要保留在尽可能多的Python模块/鸡蛋中的所有功能,因为你必须使其灵活,只拥有你需要的每个功能您的项目。我认为这是让代码易于管理和可读的唯一方法。

也就是说,如果您真的想按照您在问题中描述的方式进行操作,据我所知,没有任何工具可以完全按照您所说的操作,因为这是一种不常见的使用模式。

但我认为编写一个使用它的工具并不困难rope http://rope.sourceforge.net/。它进行静态和动态代码分析(因此您可以找到正在使用哪些导入的对象,从而猜测导入的模块中未使用哪些内容),并且还提供了许多重构工具来移动或删除代码。

不管怎样,我认为要真正制作一个工具来准确地找到当前代码中使用的所有代码,您需要对代码进行完整的单元测试覆盖,否则您应该真正有条理地导入模块的代码(仅使用from foo import bar并避免模块之间的链接导入)。

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

有没有一个工具可以删除Python中不使用的函数? 的相关文章

随机推荐

  • React (CRA) Service Worker 缓存“公共”文件夹

    执行 create react app 并启用 Service Worker 后index js 来自的所有相关文件src文件夹被缓存 然而我的一些资源位于public目录 当我跑步时npm run build the asset mani
  • 如何在 Django 中使用 toastr 来显示成功或失败消息

    我一直在使用 Django 消息框架来显示应用程序中的成功或失败消息 但我希望 UI 良好 所以我发现 toastr 是向用户显示消息的好方法 但我不知道如何使用它 请引导我完成这个过程 下面的函数将用户保存到数据库 当保存用户信息时会显示
  • 基于 Mysql Case 语句将一张表连接到另一张表

    我有一张桌子叫PublicForum4 个不同的用户可以发布到 在这个表上我有 2 个字段称为AuthorId int and AuthorType Enum 显示用户 ID 以及哪个用户撰写了该帖子 现在我想选择全部PublicForum
  • Android 布局权重%

    我正在尝试摆弄 Android 布局权重属性 我想要一个具有 3 个子布局 的垂直布局 第一个将占用 25 的空间 第二个将占用 50 最后一个将占用 25 的空间 当我尝试添加到最后一个布局时 一切都不起作用 每个布局的权重应该是多少 我
  • ListView LayoutTemplate 在为空时不显示 asp.net

    我有一个
  • 如何在 ReactJs 中调用另一个类的函数

    我有两个课程 俱乐部 俱乐部和主要应用程序课程 在俱乐部课程中 我收到一份俱乐部列表 并将它们显示在 ul 列表 在里面club类我正在尝试从俱乐部列表中获取单击项目的详细信息 关键是我不知道如何调用中存在的详细函数club类在clubs
  • 将自然语言问题转换为 SQL 查询 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想使用 opennlp Java 库将自然语言问题转换为 SQL 查询 即 谁赢得了索契女子花样滑冰比赛的冠军 应转换为 selec
  • 为什么使用 IDENTITY_INSERT 的 EF 插入不起作用?

    这是查询 using var db new AppDbContext var item new IdentityItem Id 418 Name Abrahadabra db IdentityItems Add item db Databa
  • 如何在Windows Phone 8中设置背景图片?

    我很新WP应用程序 不知道如何设置back ground图像在app xaml整个申请文件在Windows Phone 8应用程序 到目前为止 我已经放置了一些controls超过它但无法设置背景图像 我看过一些材料 但没有用 任何帮助将不
  • 终止另一个应用程序的运行 - Cocoa

    如何终止在酷卡中运行的另一个应用程序 假设我正在运行 iTunes 并且我在应用程序中输入 quit 它将退出 iTunes iTunes 只是一个例子 它可以是用户想要的任何东西 我可以从我的应用程序中打开任何应用程序 但我想知道如何关闭
  • 查找不包含所选字符串的文件

    我正在尝试查找不包含选定字符串的所有文件 查找包含的文件很容易 gci select string something 但我不知道如何否定这个说法 您可以使用Where Object gci Where Object Select Stri
  • 如何 Mockk Kotlin 顶级函数?

    Mockk https mockk io允许模拟静态函数 但是如何模拟 Kotlin 顶级函数呢 例如 如果我有一个名为HelloWorld kt 我如何嘲笑sayHello 功能 HelloWorld kt fun sayHello He
  • 为什么更新 VSCode 后出现此错误?无法读取...的源映射(Node.js)

    我的程序在更新之前可以运行视觉工作室代码 更新后 为什么会出现这个错误 Could not read source map for file c Users s aytan Desktop node new Dashboard2 node
  • AngularJS 子目录路由不起作用,应用了 标签

    我有一个非常简单的 AngularJS 模板 我正在尝试让路由正常工作 但是当我加载页面时 我只看到我的 H1 标签index html 我的应用程序位于子目录中 angular route 并且我知道部分存在 我可以访问 angular
  • Ravendb 计数查询

    我需要获取特定集合中的文档计数 现有索引 Raven DocumentCollections 存储与属于该集合的实际文档配对的集合的计数和名称 如果可能的话 我想从这个索引中获取计数 这是 Raven Document Collection
  • 动态设置水晶报表仍然要求数据库登录

    我正在尝试部署Crystal Reports in my MVC应用 为了充分利用 Crystal Report Viewer 我必须使用webform 它在我的开发环境中运行得相当好 该应用程序将部署在用户的服务器上并连接到他们的个人数据
  • 为什么“break”在结束“循环”时不需要分号?

    摘自第3 5章 https doc rust lang org book ch03 05 control flow html returning values from loops 生锈之书 的内容 我们使用break带有值的关键字coun
  • 仅选择数字列进行替换

    我有一个数据框 其中包含一些数字列 一些整数列和一些因子列 我正在尝试将数据框转换为仅对数字列进行平方 但解决方案这个线程 https stackoverflow com questions 5863097 selecting only n
  • 本机应用程序和 chrome 扩展之间的连接在一段时间后中断

    我正在使用 chrome 本机消息传递 api 在我的 chrome extension 和用 c 编写的 native windows app 之间进行通信 连接建立良好 数据也得到交换 但是 在从扩展程序对本机应用程序进行随机数量的调用
  • 有没有一个工具可以删除Python中不使用的函数?

    我有以下情况 我正在开发几个使用我编写的库模块的项目 库模块包含多个类和函数 在每个项目中 都会使用库代码的某些子集 但是 当我为其他用户发布项目时 我只想泄露该项目使用的代码而不是整个模块 这意味着对于给定的项目 我希望从库代码中删除未使