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

Mar*_*n08 38 python bash shell

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

Dav*_*ver 97

你必须添加shebang:

#!/usr/bin/env python
Run Code Online (Sandbox Code Playgroud)

然后使脚本可执行:

chmod +x foo
Run Code Online (Sandbox Code Playgroud)

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

./foo
Run Code Online (Sandbox Code Playgroud)

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

  • 另一个注意事项:如果您正在从Windows编辑文件并在Linux上调用它,您可能会遇到神秘的":没有这样的文件或目录"错误.这是由于线的行结尾是CRLF而不是LF.如果将它们转换为LF,脚本将按预期执行.Notepad ++> View> Show Symbols> Show End of Line显示EOL字符.和Notepad ++>编辑> EOL转换> Unix格式将所有行结尾转换为使用LF. (2认同)

mgc*_*mgc 7

它并不真正适用于您的个人脚本,但是当您引用时beets,请注意,由于setuptoolsentry_point选项,还可以在分发包时自动执行此操作。
因此,如果您正在分发类似的包myModule并希望main_function()通过mymodulescript在控制台中键入来访问该功能,您可能会在您的setup.py文件中添加如下内容:

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