【问题标题】:Makefile for python scripts用于 python 脚本的 Makefile
【发布时间】:2020-07-07 13:20:11
【问题描述】:

我有文件要发送,但我对如何发送有点困惑。我必须在 python 中编写两个代码(比如 A.py 和 B.py),并且需要创建一个 Makefile,以便在文件夹中的 bash 中键入“make”将为 A 和 B 创建可执行文件。我没有Unix,我从未使用过它。我是 Windows 用户。 这是我应该写在我的 .py 文件中的东西吗?如果我在 Windows 上,如何检查我是否做对了? 我看到了这篇文章Python Script Executed with Makefile,但我不确定它是如何工作的。 谢谢你的帮助

【问题讨论】:

  • Python 代码中的任何内容都不需要知道make 正在被使用。您的 Makefile 仅描述了您将在命令行中运行以构建可执行文件的命令,无论这些命令可能是什么。
  • 是否要将 .py 文件编译为 .pyc 文件? Python 通常不会像典型的 unix 可执行文件那样使用 makefile 编译。

标签: python unix makefile


【解决方案1】:

让我们以您在链接中分享的示例为例。

foo: do-foo.py
    python do-foo.py

Makefile 就像一本食谱。要制作一道菜foo,您需要一种配料do-foo.py。如果do-foo.py 存在,那么Makefile 可以执行python 脚本python do-foo.py,它将烹饪一道菜foo(执行它)。否则,脚本将不会执行,foo 菜不会煮熟。

在您的示例中使用类似的类比,您可以这样做:

all: exe_A exe_B

exe_A: A.py 
    python A.py

exe_B: B.py 
    python B.py

如果我在 Windows 上,如何检查我的操作是否正确?

要检查它,我建议您在 Windows 上安装一个名为 Cygwin 的 UNIX 模拟器。然后从那里以make all 运行它。上面有教程。

编辑:更正了 Jorengarenar 指出的我的错误

【讨论】:

  • 非常感谢 - 但是我应该在哪里编写您提到的代码?它是我应该与我的两个 .py 文件一起附加的文件吗?这是我可以使用 Windows 创建的文件格式吗?
  • Makefile 是一个独立文件,用于自动编译等。在Makefile 文件中包含我在上面all: exe_A ... 编写的脚本。然后在 UNIX 环境中,您可以调用 make all 命令来触发 Makefile 文件脚本。以下是有关如何在 Windows 上运行此 Makefile 文件的一些选项 -> link
  • 命令python do-foo.py > foo 不会创建可执行文件。它执行脚本do-foo.py 并将输出重定向到文件foo
【解决方案2】:

Python 是解释型语言 - 它不会像 C 或 C++ 那样生成可执行文件。源代码本身“是可执行的”。要执行程序A.py,您需要运行命令python A.py

在 *nix 系统上,您可以省略每次编写 python 的需要,并通过在脚本顶部添加所谓的 shebang (#!/usr/bin/env python) 并添加带有 chmod +x A.py 的可执行标志来使文件本身可执行(仅限一次)。现在脚本可以只用./A.py 执行(或者A.py 如果包含它的目录在PATH 环境变量中)。

Makefile 可以执行命令,就像 shell 脚本可以执行的一样(显然存在差异,但现在并不重要)。所以如果你想用make 执行你的脚本,你可以这样做:

foo: A.py B.py
    python A.py
    python B.py

【讨论】:

  • 非常感谢 Jorengarenar。我有和上面一样的问题:我应该在哪里写你提到的代码?它是否在我应该与我的两个 .py 文件一起附加的文件中?这是我可以使用 Windows 创建的文件格式吗?
  • make 的代码应该在 Makefile 中。 Shebang 应该位于 Python 脚本之上(注意我在这里分享了一个 *nix 版本,因为 Windows 会有所不同)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-11-11
  • 1970-01-01
  • 2018-08-12
  • 2010-12-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多