如何在不使用子进程的情况下从 python 自动脚本中运行 python 'sdist' 命令?

2024-01-12

我正在编写一个脚本来自动打包“自制”python 模块并将其分发到远程计算机上。

我正在使用 Pip 并创建了一个 setup.py 文件,但随后我必须调用子进程模块来调用“python setup.py sdist”命令。

我已经查看了 distutils.core 中的“run_setup”方法,但我试图避免一起使用子进程模块。 (如果我已经在 python 中,我认为打开 shell 来运行 python 命令没有意义......)

有没有办法将 distutils 模块导入到我的脚本中并将设置信息直接传递给其方法之一并完全避免使用 shell 命令?或任何其他可能对我有帮助的建议

thanks


只是为了完整起见,我想回答这个问题,因为我遇到了这个问题,试图自己找出如何做到这一点。就我而言,我想确保samepython 版本用于执行命令,这就是为什么使用子进程不是一个好的选择。 (编辑:正如评论中指出的,我可以将 sys.executable 与子进程一起使用,尽管在我看来,编程执行仍然是一种更干净的方法——而且显然非常简单。)

(Using distutils.core.run_setup https://docs.python.org/2/distutils/apiref.html#distutils.core.run_setup不调用子进程,但在受控范围/环境中使用 exec。)

from distutils.core import run_setup

run_setup('setup.py', script_args=['sdist'])

另一种选择可能是使用 setuptools 命令,尽管我尚未对此进行探索。显然,您仍然需要弄清楚如何避免重复项目元数据。

from setuptools.dist import Distribution
from setuptools.command.sdist import sdist

dist = Distribution({'name': 'my-project', 'version': '1.0.0'}) # etc.
dist.script_name = 'setup.py'
cmd = sdist(dist)
cmd.ensure_finalized()
cmd.run()  # TODO: error handling

无论如何,希望这能帮助某人朝着正确的方向前进。毕竟,有很多充分的理由希望以编程方式执行打包操作。

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

如何在不使用子进程的情况下从 python 自动脚本中运行 python 'sdist' 命令? 的相关文章

随机推荐

  • Get-InstalledModule 和 Get-Module -ListAvailable 之间有什么区别?

    据我所知 他们做了同样的事情 那么使用其中一种而不是另一种的原因是什么 抱歉 所以问题规则引擎 不知道还能说什么 Get InstalledModule是其一部分PowerShellGet并将使用列出已安装的模块Install Module
  • Excel IFERROR 的 R 等效项是什么?

    我正在尝试将 IFERROR 条件放入 R 中 就像 Excel IFERROR 函数一样 我正在构建一个随机森林模型 为了进行微调 我使用tuneRF函数 它有助于给出最佳的 mtry 参数 Selecting Optimal MTRY
  • 将 Python 脚本作为 Windows 后台进程运行 [重复]

    这个问题在这里已经有答案了 我一直在尝试编写一个从串行端口读取数据的Python脚本 它在命令行中运行良好 但我需要它作为后台进程运行 而无需任何命令行界面 该脚本有一个 while 循环 它从串行端口读取下一个数据字节并相应地模拟按键 为
  • 使用 ANSI 转义序列获取终端大小?

    在研究这个问题时 在评论中我发现有人提到 ANSI 转义码来获取终端大小 由于我将使用 ANSI 转义序列 我认为这将是一种比获取终端大小更优雅的方法ioctl or getenv 这是一篇关于ioctl https stackoverfl
  • 如何使用 Tailwind 修改 svg 图标颜色

    我正在使用 TailwindCSS 并且想要更改 svg 的颜色 没有 Tailwind 这个问题之前已经被问过here https stackoverflow com questions 22252472 how to change th
  • 来自 AlertDialog 的 findViewById(使用自定义布局)- NullPointerException

    我正在尝试从 AlertDialog 中的 EditTexts 中获取文本 该对话框的创建方式如下所示 问题是 我无法检索文本视图 我得到的只是一个空值 有任何想法吗 final EditText editFirstname EditTex
  • Cassandra 要求允许过滤,即使列是聚集键

    对 Cassandra 非常陌生 如果问题很简单 我们深表歉意 我创建了一个表 create table ApiLog LogId uuid DateCreated timestamp ClientIpAddress varchar pri
  • 强制多个线程在多个 CPU 可用时使用它们

    我正在编写一个 Java 程序 由于其工作性质 该程序使用大量 CPU 然而 其中很多可以并行运行 并且我已经使我的程序成为多线程的 当我运行它时 它似乎只使用一个 CPU 直到它需要更多的 CPU 然后才使用另一个 CPU 我可以在 Ja
  • 无法中断 global.asax / Application_Start

    我在第一行有一个断点Application Start 但 Visual Studio 不会中断它 Visual Studio 已将自身附加到 IIS 工作进程 自动附加到计算机 SRD00510 上的进程 2092 w3wp exe 已成
  • Mysql XML表导出命令行

    也许我在这里没有看到什么 但是为什么这个命令行在 LINUX 命令行上运行时工作得很好并提供结果集 但在 WINDOWS 命令 行上执行时它会失败并没有返回任何内容 mysql hHOSTNAME uroot p xml e SELECT
  • Python:连接多个组件来构建 URL

    我正在尝试通过加入一些动态组件来构建 URL 我想用类似的东西os path join 但对于我来说的 URL 来说 通过研究我发现urlparse urljoin 做同样的事情 然而 看起来一次只需要两个参数 到目前为止 我有以下有效但看
  • 学习卡布奇诺

    学习卡布奇诺的最佳来源是什么 我从事 传统 网络开发 但我对这个新框架非常感兴趣 请注意 我对 Objective C 毫无了解 如上所述 该网站是一个好地方 但还有一些其他好的资源 http cappuccinocasts com htt
  • 尽管环境变量设置正确,但 Android Studio 中“未找到 SDK 位置”

    我有点困惑为什么在实际设置 ANDROID HOME 环境变量时收到此消息 It is also set in project defaults 我可能在这里遗漏了一些微不足道的东西 但不确定是什么 谢谢 面临着同样的问题Intellij
  • BigQuery:通过 Java API 进行流式插入时出现错误 500

    我正在尝试使用以下示例代码插入一行 https developers google com bigquery streaming data into bigquery streaminginsertexamples https develo
  • 如何访问 Silverlight 4 中 App.xaml.cs 中创建的自定义属性

    我在 app xaml cs 文件中创建了自己的自定义属性 我需要在我的视图模型之一中访问此属性 当我尝试通过应用程序对象访问时 它不会显示 谁能帮我这个 Regards Use Application Current访问您创建的自定义属性
  • 如果大数组包含较小数组中的值,则查找大数组的索引

    有没有快的numpy用于返回较大数组中的索引列表的函数 其中它与较小数组中的值相匹配 较小的数组约为 30M 值 较大的数组为 800M 所以我想避免 for 循环numpy where calls searchsorted 的问题是 即使
  • 如何使用 numpy 创建单位矩阵

    我如何创建一个身份matrix与numpy 有没有比以下更简单的语法 numpy matrix numpy identity n 这是一个更简单的语法 np matlib identity n 这是一个更简单的语法 运行速度更快 In 1
  • MySQL 中出现 ERROR 1701、ERROR 1452 和 ERROR 1305 错误 - 需要一些专业知识

    这是我第一次真正尝试用第三范式创建数据库 我成功地创建了 DDL 脚本 在继续构建脚本之前 我已将逻辑模型验证为 3NF 但我遇到了很多错误 我不确定是否可以修复 对于这个特殊的情况 我可能已经咬了一口 但我不想放弃 这对我来说是一个很大的
  • 如何在 Create React App 中不显示警告

    我正在使用 Facebook 的 create react app 当它通过 npm start 启动时 它会向我显示警告列表 例如 Bla 已定义但从未使用预期为 但看到了 我不想看到任何这些警告 有办法抑制它们吗 对于本地 Eslint
  • 如何在不使用子进程的情况下从 python 自动脚本中运行 python 'sdist' 命令?

    我正在编写一个脚本来自动打包 自制 python 模块并将其分发到远程计算机上 我正在使用 Pip 并创建了一个 setup py 文件 但随后我必须调用子进程模块来调用 python setup py sdist 命令 我已经查看了 di