如何使python文件在没有py扩展名的情况下运行

如何使python文件在没有py扩展名的情况下运行,python,executable,Python,Executable,我有一个小python脚本,它从命令行参数中获取输入,并完成了一些操作 使用输入进行操作并显示结果 下面是工作示例代码 一些文件.py import sys arguments = sys.argv first_name = sys.argv[1] second_name = sys.argv[2] print "Hello {0} {1} !!!!".format(first_name,second_name) 现在我把它当作 python some_file.py Steve job

我有一个小python脚本,它从命令行参数中获取输入,并完成了一些操作 使用输入进行操作并显示结果

下面是工作示例代码

一些文件.py

import sys

arguments = sys.argv
first_name  = sys.argv[1]
second_name = sys.argv[2]

print "Hello {0} {1} !!!!".format(first_name,second_name)
现在我把它当作

python some_file.py Steve jobs
结果:

Hello Steve Jobs !!!!
现在我想要的是,我不想在文件名和python文件名的扩展名之前使用python命令,也就是说,我想将文件作为命令工具运行,如下所示

some_file  Steve Jobs

那么,如何才能像上面那样运行python文件呢?

类Unix操作系统解决方案:文件的第一行应该是
#/usr/bin/python
(或python解释器所在的任何位置)和
chmodu+x
脚本。使用
/一些文件参数运行它

如果您想使用
一些文件参数启动它
,只需在一个目录中创建一个指向脚本的链接,该目录已经包含在您的路径中:
sudo ln-s some\u file/usr/bin

下面是完整的程序:

blackbear@blackbear-laptop:~$ cat > hw
#!/usr/bin/python

print "Hello World!"

blackbear@blackbear-laptop:~$ chmod u+x hw
blackbear@blackbear-laptop:~$ sudo ln -s hw /usr/bin
blackbear@blackbear-laptop:~$ hw
Hello World!
blackbear@blackbear-laptop:~$ 
做一个象征性的链接

ln -s some_file.py some_file
现在,您可以按如下方式键入cmd:

some_file Steve Jobs

您可以使用
execfile('path')

在pythonshell中运行相同的程序,正如我在脚本开头添加了path,并使用chmod u+x使其可执行一样。之后,当我运行上面的liek时,它显示“bash:./some_file:没有这样的文件或目录”,shebang行必须包含Python解释器的完整路径,或者包含将找到它的已知路径的程序,例如
#/usr/bin/env python
。此外,基于shebang的解决方案将只在Unix(如OS es)上工作,而不在Windows上工作。此外,我甚至不想在某些_文件之前使用“/”,我想将其用作工具,例如,如果在linux中键入top,它将正确显示一些详细信息,我的意思是,chmod u+x某些_文件在“u”和“+”之间没有空格以避免“/”您需要将包含该文件的目录添加到搜索路径$path中,但我认为这是临时解决方案,因为如果我们在其他位置复制该文件,那么我希望我们需要运行上述命令,以便在没有py扩展名的情况下运行该文件?。我正在搜索和谈论的是,py文件并不存在于任何地方,但当我们像某个_文件(没有扩展名)一样运行该文件时,如果我们将该文件永久放置在python路径中,它应该可以工作,我们是否能够以上述方式访问该文件?如果使用Linux,请创建一个文件
emacs-nw某个_文件
,将此添加到开头的
#/bin/env python
,和
chmod+x一些文件
,运行它!我只是试过了,它可以工作。我想它在bash shell上不工作,你知道在bash shell的OS x上如何工作吗?无论是在Linux还是MacOS上,这个链接在bash上都可以正常工作。但是,您可能必须将原始文件标记为可执行文件:
chmod+x some_file.py
。此外,如果链接不在路径中的某个目录中,则可能必须指定指向该链接的路径,例如,如果链接在当前目录中,则必须指定指向该链接的路径,例如
/some\u file