【问题标题】:Creating a Python Makefile That Creates an Executable Filer Within The Same Folder创建一个在同一文件夹中创建可执行文件管理器的 Python Makefile
【发布时间】:2020-01-20 05:07:32
【问题描述】:

我正在尝试为一个名为 python_program.py 的程序创建一个 python 生成文件,该程序创建一个名为“python_program”的可执行文件。我创建了一个 makefile,当在 ubuntu 终端中输入 make 时,它​​会运行并输出 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 的可执行文件。假设您的 Python Makefilepython_program.py 位于同一目录中,因此,当您在该目录中运行 make 时,您的 Python Makefile 将创建一个 python_program 可执行文件。当python_program.py 更改时,您的 Python Makefile 必须重新创建 python_program。有几种方法可以解决这个问题(因为没有什么要编译的)。例如,您可以利用 shebang 功能,该功能允许执行可以解释的文件。这要求文件是可执行的 (chmod +x filename)。

【问题讨论】:

  • 您似乎认为 Python 是一种编译语言,就像 C 一样。事实并非如此。
  • 不需要生成文件。只需使用您的编辑器。将#!/usr/bin/env python3 或您的本地等效项作为文件python_program.py 的第一行。确保您没有使用 Windows 编辑器。
  • 另外,如果您希望 shebangified 文件没有 .py 扩展名,那么答案也很简单:重命名它。或将其复制到想要的名称。或者一开始就不要给它这样的扩展。
  • 这是一个复杂的任务。无论如何,听起来你应该取出第一行,然后将 Makefile 的命令部分更改为:cp python_program.py python_program && chmod +x python_program && ./python_program
  • @binarycoffee356 发布的答案比我给出的更笼统。随意尝试并将其标记为答案。

标签: python unix makefile


【解决方案1】:

您并不真正想要或不需要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 将自己的源打印到标准输出。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多