Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/301.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.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 .py中的一个单词命令(不带别名)_Python_Macos_Binary_Command_Executable - Fatal编程技术网

Python .py中的一个单词命令(不带别名)

Python .py中的一个单词命令(不带别名),python,macos,binary,command,executable,Python,Macos,Binary,Command,Executable,有些程序可以在任何地方用一个单字命令执行。youtube dl就是一个例子,它是一个python程序,可以使用简单的命令youtube dl[input]执行。据我所知,这仅仅是因为存在一个名为/usr/bin/youtube dl的文件,/usr/bin位于路径中。然而,我不明白我自己要做什么才能做出这样的事情。现在,我有一个名为testproject的python项目,其中包括一个类似这样的python程序: ~/testproject/files/myownprogram.py 要使其成为

有些程序可以在任何地方用一个单字命令执行。youtube dl就是一个例子,它是一个python程序,可以使用简单的命令
youtube dl[input]
执行。据我所知,这仅仅是因为存在一个名为
/usr/bin/youtube dl
的文件,
/usr/bin
位于路径中。然而,我不明白我自己要做什么才能做出这样的事情。现在,我有一个名为
testproject
的python项目,其中包括一个类似这样的python程序:
~/testproject/files/myownprogram.py

要使其成为二进制可执行文件(如youtube dl),我必须做些什么

我知道我可以制作一个
alias mop=“python~/testproject/files/myownprogram.py”
,这也是我所做的,它工作得很好。也就是说,我可以编写
$mop
,并成功运行我的程序。 但出于好奇和学习的缘故,我想知道如何制作一个文件,比如
/usr/bin/youtube dl
文件,从而消除对别名的需要

我发现在搜索引擎中很难找到关于。。。 非常感谢您的帮助!:-)

编辑:

我的问题与标记为重复的问题不同,因为我不希望将其作为.sh脚本执行。我只想将其作为一个后缀减去一个单词的命令来执行,类似于
/usr/bin
:-)中的所有其他可执行文件


例如:
$myown
应该运行我的程序,不需要别名,也不需要在提示符处写“.sh”或“.py”。也就是说,我希望有一个文件
/usr/bin/myown
,它可以通过简单的命令
myown
从任何地方运行我的
testproject

应用程序是“从任何地方”执行的,因为系统具有查找这些文件的特定层次结构(当前目录,然后是系统路径)。因此,它知道在
/usr/bin
中查找,因为这在您的系统路径中

至于确保在执行时使用python,您应该在文件的顶部添加以下内容(查看一些python应用程序源代码,您将看到这一点):


这告诉系统使用系统“python”命令执行脚本

应用程序是“从任何地方”执行的,因为系统具有查找这些文件的特定位置层次结构(当前目录,然后是系统路径)。因此,它知道在
/usr/bin
中查找,因为这在您的系统路径中

至于确保在执行时使用python,您应该在文件的顶部添加以下内容(查看一些python应用程序源代码,您将看到这一点):


这告诉系统使用系统“python”命令执行脚本

正如你所说的可能的副本。。。您需要将脚本放在
$PATH
中的文件夹中。因此,我必须为每个项目向$PATH添加一个新文件夹?这会不会让我的$PATH在几个项目之后变得很长…不切实际?我在
/usr/bin
文件夹中有很多可以执行的二进制文件。我是否可以将我的项目放在那里,从而避免将新文件夹添加到$PATH?正如您所说的,可能是重复的。。。您需要将脚本放在
$PATH
中的文件夹中。因此,我必须为每个项目向$PATH添加一个新文件夹?这会不会让我的$PATH在几个项目之后变得很长…不切实际?我在
/usr/bin
文件夹中有很多可以执行的二进制文件。我可以把我的项目放在那里,从而避免在$PATH中添加新文件夹吗?谢谢你的回复,谢谢你确认我对PATH的想法。我的文件已经是可执行文件,如前所述,当我运行我创建的完整路径或别名时,工作正常。但是,(据我所知)如果不使用别名,我无法运行短命令。非常具体地说,我想知道youtube dl是如何在
/usr/bin
中创建无后缀文件的。我该怎么做呢?Unix不关心文件名或扩展名;它关心文件是否标记为可执行文件,对于脚本,是否存在正确的shebang(#!)行。如果这两个文件都存在,您可以调用该文件,然后它将运行。这就是youtube dl运行的原因,尽管它是Python脚本。感谢您的回复,感谢您确认我对路径的想法。我的文件已经是可执行文件,如前所述,当我运行我创建的完整路径或别名时,工作正常。但是,(据我所知)如果不使用别名,我无法运行短命令。非常具体地说,我想知道youtube dl是如何在
/usr/bin
中创建无后缀文件的。我该怎么做呢?Unix不关心文件名或扩展名;它关心文件是否标记为可执行文件,对于脚本,是否存在正确的shebang(#!)行。如果这两个文件都存在,您可以调用该文件,然后它将运行。这就是youtube dl运行的原因,即使它是Python脚本。
#!/usr/bin/env python