如何删除构建产品

2024-05-02

是否可以自动删除由生成的构建产品setup.py脚本基于设置工具?

我刚刚开始一个新的 Python 项目,这是我第一次使用设置工具作为一名开发人员,所以我可能会犯错。当我使用构建项目时python setup.py bdist, 三个目录,build, dist和一个结尾为.egg-info被创建。当我然后跑python setup.py clean它似乎没有做任何事情,只是打印:

running clean

我尝试过添加--all to the clean命令,虽然它确实删除了一些文件build目录,它不会删除目录本身或其他两个目录中的任何文件。

我假设这应该很容易实现,但我只是找错了地方。我已经习惯了这个功能,例如几乎任何项目都使用make where make clean or make distclean将删除任何构建产品。


标准方法:

distutils.command.clean

From 清理 setup.py 中的构建目录 https://stackoverflow.com/questions/1594827/cleaning-build-directory-in-setup-py/1594896#1594896文档 https://docs.python.org/3/distutils/apiref.html#module-distutils.command.clean:

此命令删除由 build 及其子命令创建的临时文件,例如中间编译的目标文件。使用 --all 选项,将删除完整的构建目录。


另一种方法:

这可能不是最好的解决方案:

从评论看来在这个答案下面 https://stackoverflow.com/questions/1594827/cleaning-build-directory-in-setup-py/1594896#1594896 that python setup.py clean --all有时无法删除所有内容(评论中示例中的 Numpy)。

似乎并非所有 setup.py 脚本都支持 clean。示例:NumPy – kevinarpe 2016 年 6 月 15 日 7:14


你可以使用remove_tree() https://docs.python.org/2.5/dist/module-distutils.dirutil.html设置脚本中的命令:

import glob
remove_tree(['dist', glob.glob('*.egg-info')[0],glob.glob('build/bdist.*')[0]]) 

或者在设置脚本中:

from setuptools import setup
from setuptools.command import install 

class PostInstallCommand(install):

    def run(self):
        import glob
        from distutils.dir_util import remove_tree
        remove_tree(['dist', glob.glob('*.egg-info')[0],glob.glob('build/bdist.*')[0]]) 


setup(name='Some Name',
      version='1.0',
      description='A cross platform library',
      author='Simon',
      platforms = ["windows", "mac", "linux"],
      py_modules = ['UsefulStuff', '__init__'],
      cmdclass = {'install':PostInstallCommand}
     )

我解决这个问题的另一种方法是手动删除所有内容(使用shutil https://docs.python.org/3/library/shutil.html and glob https://docs.python.org/3/library/glob.html):

import shutil, glob
shutil.rmtree('dist')
shutil.rmtree(glob.glob('*.egg-info')[0])
shutil.rmtree(glob.glob('build/bdist.*')[0])

将其添加到设置脚本中比较困难,但是使用这个答案 https://stackoverflow.com/questions/20288711/post-install-script-with-python-setuptools/36902139#36902139,它应该看起来像这样:

from setuptools import setup
from setuptools.command import install 

class PostInstallCommand(install):

    def run(self):
        import shutil, glob
        shutil.rmtree('dist')
        shutil.rmtree(glob.glob('*.egg-info')[0])
        shutil.rmtree(glob.glob('build/bdist.*')[0])
        install.run(self)



setup(name='Some Name',
      version='1.0',
      description='A cross platform library',
      author='Simon',
      platforms = ["windows", "mac", "linux"],
      py_modules = ['UsefulStuff', '__init__'],
      cmdclass = {'install':PostInstallCommand}
     )

cmdclass = {'install'}允许此类在安装后运行。请参阅此答案了解更多详细信息 https://stackoverflow.com/questions/20288711/post-install-script-with-python-setuptools/36902139#36902139.

是什么让我产生了使用 Shutil 的想法?

使用 Shutil 的想法来自于旧的文档 https://docs.python.org/2.5/dist/module-distutils.dirutil.html:

其中一些可以用shutil模块替换?

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

如何删除构建产品 的相关文章

  • 没有名为 crypto.cipher 的模块

    我现在正在尝试加密一段时间 我最近得到了这个基于 python 的密码器 名为PythonCrypter https github com jbertman PythonCrypter 我对 Python 相当陌生 当我尝试通过终端打开 C
  • 通过 Scrapy 抓取 Google Analytics

    我一直在尝试使用 Scrapy 从 Google Analytics 获取一些数据 尽管我是一个完全的 Python 新手 但我已经取得了一些进展 我现在可以通过 Scrapy 登录 Google Analytics 但我需要发出 AJAX
  • 在 python 程序中合并第三方库的最佳实践是什么?

    下午好 我正在为我的工作编写一个中小型Python程序 该任务需要我使用 Excel 库xlwt and xlrd 以及一个用于查询 Oracle 数据库的库 称为CX Oracle 我正在通过版本控制系统 即CVS 开发该项目 我想知道围
  • Django 管理员在模型编辑时间歇性返回 404

    我们使用 Django Admin 来维护导出到我们的一些站点的一些数据 有时 当单击标准更改列表视图来获取模型编辑表单而不是路由到正确的页面时 我们会得到 Django 404 页面 模板 它是偶尔发生的 我们可以通过重新加载三次来重现它
  • 将数据从 python pandas 数据框导出或写入 MS Access 表

    我正在尝试将数据从 python pandas 数据框导出到现有的 MS Access 表 我想用已更新的数据替换 MS Access 表 在 python 中 我尝试使用 pandas to sql 但收到错误消息 我觉得很奇怪 使用 p
  • 通过最小元素比较对 5 个元素进行排序

    我必须在 python 中使用元素之间的最小比较次数来建模对 5 个元素的列表进行排序的执行计划 除此之外 复杂性是无关紧要的 结果是一个对的列表 表示在另一时间对列表进行排序所需的比较 我知道有一种算法可以通过 7 次比较 总是在元素之间
  • 哈德逊依赖项

    我已经设置了我的 hudson 工作 A 工作 A 取决于工作 B 和 C 我已经将它们设置为 构建其他项目 尽管每个作业都位于我的工作区中的单独目录中 默认结构 但效果很好 但我需要作业 A 工作区 根文件夹 中的作业 B 和 C 我考虑
  • 从字符串中删除识别的日期

    作为输入 我有几个包含不同格式日期的字符串 例如 彼得在16 45 我的生日是1990年7月8日 On 7 月 11 日星期六我会回家 I use dateutil parser parse识别字符串中的日期 在下一步中 我想从字符串中删除
  • 如何在 Python 中检索 for 循环中的剩余项目?

    我有一个简单的 for 循环迭代项目列表 在某些时候 我知道它会破裂 我该如何退回剩余的物品 for i in a b c d e f g try some func i except return remaining items if s
  • python 相当于 R 中的 get() (= 使用字符串检索符号的值)

    在 R 中 get s 函数检索名称存储在字符变量 向量 中的符号的值s e g X lt 10 r lt XVI s lt substr r 1 1 X get s 10 取罗马数字的第一个符号r并将其转换为其等效整数 尽管花了一些时间翻
  • 根据列值突出显示数据框中的行?

    假设我有这样的数据框 col1 col2 col3 col4 0 A A 1 pass 2 1 A A 2 pass 4 2 A A 1 fail 4 3 A A 1 fail 5 4 A A 1 pass 3 5 A A 2 fail 2
  • OpenCV 无法从 MacBook Pro iSight 捕获

    几天后 我无法再从 opencv 应用程序内部打开我的 iSight 相机 cap cv2 VideoCapture 0 返回 并且cap isOpened 回报true 然而 cap grab 刚刚返回false 有任何想法吗 示例代码
  • python获取上传/下载速度

    我想在我的计算机上监控上传和下载速度 一个名为 conky 的程序已经在 conky conf 中执行了以下操作 Connection quality alignr wireless link qual perc wlan0 downspe
  • 将图像分割成多个网格

    我使用下面的代码将图像分割成网格的 20 个相等的部分 import cv2 im cv2 imread apple jpg im cv2 resize im 1000 500 imgwidth im shape 0 imgheight i
  • 如何在seaborn displot中使用hist_kws

    我想在同一图中用不同的颜色绘制直方图和 kde 线 我想为直方图设置绿色 为 kde 线设置蓝色 我设法弄清楚使用 line kws 来更改 kde 线条颜色 但 hist kws 不适用于显示 我尝试过使用 histplot 但我无法为
  • 类型错误:预期单个张量时的张量列表 - 将 const 与 tf.random_normal 一起使用时

    我有以下 TensorFlow 代码 tf constant tf random normal time step batch size 1 1 我正进入 状态TypeError List of Tensors when single Te
  • 有人用过 Dabo 做过中型项目吗? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我们正处于一个新的 ERP 风格的客户端 服务器应用程序的开始阶段 该应用程序是作为 Python 富客户端开发的 我们目前正在评估 Dabo
  • Rocket UniData/UniVerse:ODBC 无法分配足够的内存

    每当我尝试使用pyodbc连接到 Rocket UniData UniVerse 数据时我不断遇到错误 pyodbc Error 00000 00000 Rocket U2 U2ODBC 0302810 Unable to allocate
  • Python Selenium:如何在文本文件中打印网站上的值?

    我正在尝试编写一个脚本 该脚本将从 tulsaspca org 网站获取以下 6 个值并将其打印在 txt 文件中 最终输出应该是 905 4896 7105 23194 1004 42000 放置的动物 的 HTML span class
  • Statsmodels.formula.api OLS不显示截距的统计值

    我正在运行以下源代码 import statsmodels formula api as sm Add one column of ones for the intercept term X np append arr np ones 50

随机推荐

  • c# http Post 在 webresponse 中没有得到任何内容

    这是我的请求和响应代码 System IO MemoryStream xmlStream null HttpWebRequest HttpReq HttpWebRequest WebRequest Create url xmlStream
  • 使用 bash 脚本迭代目录中的文件

    我想迭代给定目录中的文件 我尝试使用 for 循环进行相同的操作 但是我在这个循环中还有另一个循环 我需要读取多个文件 直到该循环中的条件为真才能一次上传 但是在内部循环中我是由于文件迭代器循环位于内部循环之外 因此只能访问一个文件 是否有
  • 是否可以仅从复制因子为 3 的 Cassandra 集群中的单个节点读取数据?

    我知道 Cassandra 有不同的读取一致性级别 但我还没有看到一种一致性级别允许仅从一个节点按键读取数据 我的意思是 如果我们有一个复制因子为 3 的集群 那么我们在读取时总是会询问所有节点 即使我们选择一致性级别 1 我们也会询问所有
  • Ant javac 任务出错:[javac] 警告:[选项] 引导类路径未与 -source 1.6 一起设置

    我正在尝试运行一个使用的 ant 任务axis2 ant plugin 1 6 0 jar org apache axis2 tool ant AntCodegenTask执行一个WSDL2Java手术 在ant脚本的顶部 我定义了java
  • 在 Common Lisp 中编写 Lambda 表达式

    我目前正在阅读 Paul Graham 的 ANSI Common Lisp 并且有一个关于编写 lambda 表达式的问题 我们是否需要在 lambda 表达式前面加上前缀 如果我在 REPL 中写这样的东西 它会工作得很好 gt lam
  • 如何在 kibana 中自动配置索引模式

    是否可以在 kibana 中自动配置索引模式 要么通过一些设置文件 要么通过rest api 安装后可以手动完成 Kibana 5 x 公开了这样的 API 来管理索引模式 要创建索引模式 可以发出以下命令来 kibana 访问 url 只
  • 使用java将数据插入mySQL表

    I have a predefined table in a mySQL database 我正在努力将从用户输入的数据保存到数据库中 但我似乎无法将任何数据保存在数据库中 使用以下代码 我尝试更新数据库的第一行 ID 1 到 OTHER
  • 确定视口或“标准”浏览器的最佳方法

    所以 现在我们都知道 iOS 移动 Safari 使用视口 Android 浏览器也是如此 而不是 标准 浏览器窗口 这会导致问题overflow hidden and position fixed 不幸的是 iPad 的情况也是如此 我想
  • 如何在 Objective-C 中删除浮点上的尾随零而不进行四舍五入?

    我需要清除浮点数上的尾随零而不进行四舍五入 我只需要显示相关的小数位 例如 如果我有 0 5 我需要它显示 0 5 而不是 0 500000 如果我有 2 58328 我想显示 2 58328 如果我有 3 我想显示 3 而不是 3 000
  • 在 Elasticsearch 中对具有一个值的属性进行多个值查询

    我正在尝试在这个查询的基础上进行一些构建 我正在搜索的索引还有一个带有 id 的 实体 字段 因此 一些记录将具有 实体 16 实体 156 等 具体取决于实体的 ID 我需要以这样的方式扩展此查询 以便可以传递数组或某些值列表 例如 te
  • 删除键空间挂起

    问题 drop keyspace MyKeyspace hangs 环境 这是 virtualbox 中的 Ubuntu 12 04 64 位 运行单个 Cassandra 实例 在开发计算机上 卡桑德拉是 1 1 6 myuser myh
  • 在 .NET 中使用 try-catch 进行流量控制是否“不好”?

    我刚刚在一个项目中发现 try myLabel Text school SchoolName catch myPanel Visible false 我想与开发人员交谈而不是写这个 说会引发空异常 因为school理论上可能为空 而不是my
  • CSS 选择器:id 或类中的第一个 div

    用于选择类中或具有特定 id 的第一个 div 的正确 CSS 选择器是什么 对于父 子元素来说 这似乎要容易得多 但我还没有找到简单元素的任何内容 更新 解决方案 我发现的最干净 最兼容的解决方案是 class class 它选择前一个类
  • 如何在不使用完整备份的情况下使用生产数据刷新 SQL Server 测试实例

    我有两台 MS SQL 2005 服务器 一台用于生产 一台用于测试 并且两台服务器的恢复模型均为 完整 我将生产数据库的备份恢复到测试服务器 然后让用户进行更改 我希望能够 回滚对测试 SQL 服务器所做的所有更改 应用自测试服务器最初恢
  • C# 调用返回结构的 C++ DLL 函数

    我有一个 C dll 它定义了一个结构体和一个 dll 调用 如下所示 typedef const char FString typedef struct FString version FString build no FString b
  • 使用 webbrowser 控件 c# 检测网页何时完全加载

    我正在使用一个WebBrowsercontrol 有一个事件称为DocumentCompleted 该事件会针对网页中的每个框架以及加载的所有子文档 例如 JS 和 CSS 触发 我的问题是如何检测此事件的最后一个条目 我的意思是如何检测页
  • iPhone / .NET WCF 互操作性

    我正在构建一个 NET Web 服务 和一个将使用这些服务的 iPhone 应用程序 我很好奇是否有任何构建两者之间交换数据的协议的最佳实践 对于我来说 基于 SOAP 的 Web 服务对于 iPhone 应用程序来说太沉重了 也许可以用
  • 在 Java EE 应用程序开发中使用 Docker

    我将添加300点作为赏金 我最近开始仔细研究 Docker 以及如何使用它来更快地让团队的新成员启动并运行开发环境 以及将新版本的软件交付到生产环境 我有一些关于如何以及在什么阶段将 Java EE 应用程序添加到容器的问题 据我所知 有多
  • 每个屏幕方向的文本大小不同?

    我正在开发一个计算器 在横向上我添加了更多按钮 因此每个按钮都会变得更小以适应额外的按钮 此时 我只是使用较小的字体大小 以便它们在横向模式下适合较小的按钮 但是我希望纵向上的文本比横向上的文本更大 我一直在尝试找出一种根据屏幕方向使用不同
  • 如何删除构建产品

    是否可以自动删除由生成的构建产品setup py脚本基于设置工具 我刚刚开始一个新的 Python 项目 这是我第一次使用设置工具作为一名开发人员 所以我可能会犯错 当我使用构建项目时python setup py bdist 三个目录 b