从不带.py扩展名的终端运行python脚本


14

我想通过简单地输入script从终端调用python脚本script.py。这可能吗?如果是这样,怎么办?

我知道我可以通过在脚本顶部添加#!/ usr / bin / env python来避免键入python script.py,但是我仍然必须添加后缀.py才能运行脚本。

Answers:


21

Unix / Linux文件系统不像Windows那样依赖扩展名。您不需要.py在文件末尾运行它。

您可以通过使用解释器调用文件来运行文件:

python ScriptFile

或者通过将其标记为可执行文件并在第一行上定义解释器(例如#!/usr/bin/python)。

如果无法使用以下命令执行文件:

/Path/to/ScriptFile

检查权限

ls -l ScriptFile

您可能需要添加可执行标志,chmod它会为您执行。

如果您定期使用自定义脚本,则可能要确保将存储它们的目录添加到PATH环境变量中。


1
该文件位于〜/ workspace / python中。我已经将〜/ workspace / python添加到了我的路径,我运行了sudo chmod a + x script.py“,并且我已经将shebang行(#!/ usr / bin / env python)添加到了脚本顶部我可以通过键入* script.py来运行脚本,但仅键入脚本不起作用
jmau5 2011年

2
在unix / linux中,所有内容都是文件,并响应其文件名。您不能将Script.py称为脚本。尝试将文件从script.py重命名为script,它将解决您的问题。
Patrick

对不起,我误会了!一切都解决了,谢谢!
jmau5 2011年

5

.py扩展对于运行脚本是不必要的。您只需使脚本可执行(例如,通过运行chmod a+x script)并添加shebang行(#!/usr/bin/env python)。


请参阅我对Patrick的回复的评论。
jmau5 2011年

4

作为一种选择,您可以为脚本(.py文件)创建包装器:

例如,您有一个脚本,runme.py因此可以创建新文件runme来包装脚本:

#!/usr/bin/env python
import runme

然后runme.py只需runme在外壳中调用即可调用该功能。

这是多平台的脚本是有用的,在Windows平台上,因为你可以指定.py文件,只是不带扩展名和名称被调用家当在头,但在Linux平台上,你不能因此包装出来。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.