python - 创建一个在同一文件夹中创建可执行文件管理器的 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_program
在python_program.py
更改时重新创建。有几种方法可以解决这个问题(因为没有什么要编译的)。例如,您可以利用 shebang 功能,该功能允许执行可以解释的文件。这要求文件是可执行的 (chmod +x filename
)。
解决方案
你真的不想要或不需要一个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
自己的源打印到标准输出。
推荐阅读
- java - 无法为最终变量“名称”赋值
- mysql - MYSQL 在相关表中插入
- c++ - c_str() 是在堆中分配内存吗?
- java - MapStruct - 无法映射属性 可选
到本地日期 - java - java中的Xmx128M -Xms16M BinaryCalculator错误
- go - 使用 intellij 运行 go 应用程序时加载配置文件
- mysql - 从不同的表中获取复杂的数据
- google-bigquery - 将字符串数组转换为单行值
- c - 从 arduino 接收和发送数据到 stml476RG
- reactjs - 如何使用 updateQuery 编写测试 react-apollo 组件来更新查询