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

2024-02-12

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

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

EDIT

一些澄清/答复:

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

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

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

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

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

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

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

  • Pycharm Python 控制台不打印输出

    我有一个从 Pycharm python 控制台调用的函数 但没有显示输出 In 2 def problem1 6 for i in range 1 101 2 print i end In 3 problem1 6 In 4 另一方面 像
  • 更改自动插入 tkinter 小部件的文本颜色

    我有一个文本框小部件 其中插入了三条消息 一条是开始消息 一条是结束消息 一条是在 单位 被摧毁时发出警报的消息 我希望开始和结束消息是黑色的 但被毁坏的消息 参见我在代码中评论的位置 插入小部件时颜色为红色 我不太确定如何去做这件事 我看
  • Python 多处理示例不起作用

    我正在尝试学习如何使用multiprocessing但我无法让它发挥作用 这是代码文档 http docs python org 2 library multiprocessing html from multiprocessing imp
  • 如何使用包含代码的“asyncio.sleep()”进行单元测试?

    我在编写 asyncio sleep 包含的单元测试时遇到问题 我要等待实际的睡眠时间吗 I used freezegun到嘲笑时间 当我尝试使用普通可调用对象运行测试时 这个库非常有用 但我找不到运行包含 asyncio sleep 的测
  • feedparser 在脚本运行期间失败,但无法在交互式 python 控制台中重现

    当我运行 eclipse 或在 iPython 中运行脚本时 它失败了 ascii codec can t decode byte 0xe2 in position 32 ordinal not in range 128 我不知道为什么 但
  • python pandas 中的双端队列

    我正在使用Python的deque 实现一个简单的循环缓冲区 from collections import deque import numpy as np test sequence np array range 100 2 resha
  • Pandas Dataframe 中 bool 值的条件前向填充

    问题 如何转发 fill boolTruepandas 数据框中的值 如果是当天的第一个条目 True 到一天结束时 请参阅以下示例和所需的输出 Data import pandas as pd import numpy as np df
  • 循环中断打破tqdm

    下面的简单代码使用tqdm https github com tqdm tqdm在循环迭代时显示进度条 import tqdm for f in tqdm tqdm range 100000000 if f gt 100000000 4 b
  • Python 3 中“map”类型的对象没有 len()

    我在使用 Python 3 时遇到问题 我得到了 Python 2 7 代码 目前我正在尝试更新它 我收到错误 类型错误 map 类型的对象没有 len 在这部分 str len seed candidates 在我像这样初始化它之前 se
  • Nuitka 未使用 nuitka --recurse-all hello.py [错误] 编译 exe

    我正在尝试通过 nuitka 创建一个简单的 exe 这样我就可以在我的笔记本电脑上运行它 而无需安装 Python 我在 Windows 10 上并使用 Anaconda Python 3 我输入 nuitka recurse all h
  • 如何将 PIL 图像转换为 NumPy 数组?

    如何转换 PILImage来回转换为 NumPy 数组 这样我就可以比 PIL 进行更快的像素级转换PixelAccess允许 我可以通过以下方式将其转换为 NumPy 数组 pic Image open foo jpg pix numpy
  • 如何在 Django 中使用并发进程记录到单个文件而不使用独占锁

    给定一个在多个服务器上同时执行的 Django 应用程序 该应用程序如何记录到单个共享日志文件 在网络共享中 而不保持该文件以独占模式永久打开 当您想要利用日志流时 这种情况适用于 Windows Azure 网站上托管的 Django 应
  • Python:计算字典的重复值

    我有一本字典如下 dictA unit1 test1 alpha unit1 test2 beta unit2 test1 alpha unit2 test2 gamma unit3 test1 delta unit3 test2 gamm
  • 设置 torch.gather(...) 调用的结果

    我有一个形状为 n x m 的 2D pytorch 张量 我想使用索引列表来索引第二个维度 可以使用 torch gather 完成 然后然后还设置新值到索引的结果 Example data torch tensor 0 1 2 3 4
  • glpk.LPX 向后兼容性?

    较新版本的glpk没有LPXapi 旧包需要它 我如何使用旧包 例如COBRA http opencobra sourceforge net openCOBRA Welcome html 与较新版本的glpk 注意COBRA适用于 MATL
  • 在python中,如何仅搜索所选子字符串之前的一个单词

    给定文本文件中的长行列表 我只想返回紧邻其前面的子字符串 例如单词狗 描述狗的单词 例如 假设有这些行包含狗 hotdog big dog is dogged dog spy with my dog brown dogs 在这种情况下 期望
  • 如何使用google colab在jupyter笔记本中显示GIF?

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

    我是 Python 新手 主要从事 Java 编程 我目前正在思考Python中的类是如何实例化的 我明白那个 init 就像Java中的构造函数 然而 有时 python 类没有 init 方法 在这种情况下我假设有一个默认构造函数 就像
  • Spark.read 在 Databricks 中给出 KrbException

    我正在尝试从 databricks 笔记本连接到 SQL 数据库 以下是我的代码 jdbcDF spark read format com microsoft sqlserver jdbc spark option url jdbc sql
  • 改变字典的哈希函数

    按照此question https stackoverflow com questions 37100390 towards understanding dictionaries 我们知道两个不同的字典 dict 1 and dict 2例

随机推荐

  • 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中不使用的函数?

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