如何在不输入'python ...'的情况下运行python脚本

时间:2011-02-14 14:57:42

标签: python bash shell

我想运行一个python脚本而不必每次都在shell中调用“python”。我试图将shebang#!/ path /添加到/ python但这似乎不起作用。有谁知道这方面的工作?非常感谢。

5 个答案:

答案 0 :(得分:97)

你必须添加shebang:

#!/usr/bin/env python

然后使脚本可执行:

chmod +x foo

然后你可以像任何其他可执行文件一样运行它:

./foo

来自Homer6的一条说明:如果你是从Windows编辑文件并在linux上调用它,你可能会遇到神秘的“没有这样的文件或目录”错误。这是由于线的行结尾是CRLF而不是LF。如果将它们转换为LF,脚本将按预期执行。 Notepad ++>查看>显示符号>显示行尾以显示EOL字符。和Notepad ++>编辑> EOL转换> Unix格式转换所有行结尾使用LF。或者,您可以使用大多数Linux系统上的dos2unix工具(dos2unix foo.py)。

答案 1 :(得分:3)

  1. 在脚本顶部添加一行:

    #! /usr/bin/env python
    
  2. 将您的脚本从script_name.py重命名为script_name
  3. 使脚本可执行:chmod +x script_name
  4. 顶部的行选择在提示符下键入python时获得的python。您还可以指定直接路径:

    #!/opt/python/3.6/bin/python
    

答案 2 :(得分:3)

它并不真正适用于您的个人脚本,但在您引用beets时,请注意,在分发您的包时,也可以自动执行此操作,这要归功于setuptools entry_point选项。
因此,如果您要分发myModule这样的包并希望通过在控制台中键入main_function()来访问mymodulescript函数,则可能会在setup.py文件中添加这样的内容:

setup(
    # your other arguments ..
    entry_points={
        'console_scripts': [
            'mymodulescript = myModule:main_function'
        ]
    }
)

答案 3 :(得分:2)

另一种解决方法可能是使用.bashrc中定义的别名:

e.g。在.bachrc文件中添加以下行:

alias mypythonalias = "python mypyrhonfile.py"

输入终端:

source ~/.bashrc

然后你可以输入:

mypythonalias

执行python文件。

答案 4 :(得分:1)

确保您能够在终端上运行/ path / to / python。并确保您已为python文件授予执行权限。您可以通过

授予该文件的权限
chmod +x mypythonfile.py