创建Python Makefile,在同一文件夹中创建可执行文件管理器
我试图为一个名为python_program.py的程序创建一个python makefile,该程序创建一个名为“python_program”的可执行文件。我创建了一个make文件,当make被输入ubuntu终端时,它运行并输出python_program.py的内容。但是,它并不是在makefile和程序所在的文件夹中创建可执行文件“python_program”。我不确定我应该在何处以及编写什么来创建可执行文件。有人能告诉我为什么我的代码没有创建这个可执行文件“python_程序”吗。我的代码如下:创建Python Makefile,在同一文件夹中创建可执行文件管理器,python,unix,makefile,Python,Unix,Makefile,我试图为一个名为python_program.py的程序创建一个python makefile,该程序创建一个名为“python_program”的可执行文件。我创建了一个make文件,当make被输入ubuntu终端时,它运行并输出python_program.py的内容。但是,它并不是在makefile和程序所在的文件夹中创建可执行文件“python_program”。我不确定我应该在何处以及编写什么来创建可执行文件。有人能告诉我为什么我的代码没有创建这个可执行文件“python_程序”吗。
#!/usr/bin/env python
all: python_program.py
chmod +x python_program.py
./python_program.py
这是作业:
使用文件python\u program.py
创建名为python\u program
的可执行文件。假设您的PythonMakefile
与Python_程序.py
位于同一目录中,因此,当您在该目录中运行make
时,您的PythonMakefile
将创建一个Python_程序
可执行文件。当Python\u program.py
发生更改时,您的Python生成文件必须重新创建Python\u程序。有几种方法可以实现这一点(因为不需要编译)。例如,您可以利用shebang功能,它允许执行可以解释的文件。这要求文件是可执行的(chmod+x文件名
)
对此,您并不真正想要或需要Makefile
。在Unix上,任何包含解释语言代码的文本文件都可以是脚本。shebang应该是脚本文件本身的第一行,然后需要使用chmod
使该文件可执行,就像您已经知道的那样
对文件的进一步编辑通常会保留这些特征(显然在编辑时不会弄乱shebang行),因此只需添加一次
初学者常见的一个错误是在Windows上编辑文件,这可能会以错误的编码保存文件
无论如何,这里有一个简单的Makefile
,可以满足您的需求:
python_program: python_program.py
python ./$< >$@
chmod +x $@
python\u程序:python\u program.py
python./$<>$@
chmod+x$@
下面是一个将shebang显式添加到新文件的示例:
python_program: python_program.py
printf '#!/usr/bin/env python\n' >$@
python ./$< >>$@
chmod +x $@
python\u程序:python\u program.py
printf'#/usr/bin/env python\n'>$@
python./$<>>$@
chmod+x$@
这两种方法都假设python\u program.py
将自己的源代码打印到标准输出。您似乎假设python是一种编译语言,就像C语言一样。它不是。这不需要生成文件。只需使用你的编辑器。放#/usr/bin/env python3
或本地等效文件,作为文件python\u program.py
的第一行。确保不使用Windows编辑器。此外,如果希望shebangified文件没有扩展名.py
,那么答案也很简单:重命名它。或者复制到想要的名字。或者一开始就不要给它这样的扩展,这是一个复杂的赋值。无论如何,听起来您应该去掉第一行shebang,然后将Makefile的commands部分更改为:cp python\u program.py python\u program&&chmod+x python\u program&./python\u program
@binarycofee356发布了一个比我给出的更一般的答案。请随意尝试,并将其标记为答案。