首页 > 解决方案 > 创建一个在同一文件夹中创建可执行文件管理器的 Python Makefile

问题描述

我正在尝试为一个名为 python_program.py 的程序创建一个 python makefile,该程序创建一个名为“python_program”的可执行文件。我创建了一个makefile,当make 被输入到ubuntu 终端时,它运行并输出python_program.py 的内容。但是,它不会在 makefile 和程序所在的文件夹中创建可执行文件“python_program”。我不确定我应该在哪里以及应该为要创建的可执行文件编写什么。有人可以指导我为什么我的代码没有创建这个可执行文件“python_program”。我的代码如下:

#!/usr/bin/env python
all: python_program.py
        chmod +x python_program.py
        ./python_program.py

这是作业:

使用该文件python_program.py创建一个名为python_program. 假设您的 PythonMakefile与 . 位于同一目录中python_program.py,因此,当您make在该目录中运行时,您的 PythonMakefile将创建一个python_program可执行文件。您的 Python Makefile 必须python_programpython_program.py更改时重新创建。有几种方法可以解决这个问题(因为没有什么要编译的)。例如,您可以利用 shebang 功能,该功能允许执行可以解释的文件。这要求文件是可执行的 ( chmod +x filename)。

标签: pythonunixmakefile

解决方案


你真的不想要或不需要一个Makefile。在 Unix 上,任何包含解释语言代码的文本文件都可以是脚本。shebang 应该是脚本文件本身的第一行,然后需要使用 使该文件可执行chmod,就像您已经知道的那样。

对文件的进一步编辑通常会保留这些特征(显然在编辑时不要弄乱 shebang 行),因此它们只需要添加一次。

一个常见的初学者错误是在 Windows 上编辑文件,这可能会以错误的编码保存文件。

无论如何,这是一个Makefile满足您要求的简单方法:

python_program: python_program.py
    python ./$< >$@
    chmod +x $@

这是一个明确向新文件添加shebang的文件:

python_program: python_program.py
    printf '#!/usr/bin/env python\n' >$@
    python ./$< >>$@
    chmod +x $@

这两个都假设将python_program.py自己的源打印到标准输出。


推荐阅读