Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
创建Python Makefile,在同一文件夹中创建可执行文件管理器_Python_Unix_Makefile - Fatal编程技术网

创建Python Makefile,在同一文件夹中创建可执行文件管理器

创建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_程序”吗。

我试图为一个名为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
的可执行文件。假设您的Python
Makefile
Python_程序.py
位于同一目录中,因此,当您在该目录中运行
make
时,您的Python
Makefile
将创建一个
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发布了一个比我给出的更一般的答案。请随意尝试,并将其标记为答案。