Calling a python script from command line without typing “python” first

前端 未结 6 614
暖寄归人
暖寄归人 2020-11-29 10:27

Question: In command line, how do I call a python script without having to type python in front of the script\'s name? Is this even possible?


Info

相关标签:
6条回答
  • 2020-11-29 10:55

    Another way to do this would be to package your python script.

    Then all you would have to do is run $ pip install package-name and simply running $ package-name from any directory would execute your python script.

    I would recommend this method since it enables you to quickly share/install/use/remove your python script.

    I wrote a simple script QuickPackage that can instantly create and upload python package for your awesome script by just entering the path of your python script.

    Example:

    $ pip install quickpackage
    

    Usage :

    Usage Simply run quickpackage and enter the path of your python script.

    Example:

    ❯ quickpackage                                                    
    Enter name: quickpackage
    Enter version: 1.1
    Enter description: Instantly create and upload python package for your script
    Enter github url: https://github.com/yask123/quick-package
    enter author: Yask Srivastava
    Enter email: yask123@gmail.com
    Path of python script file: run.py
    running register
    ....
    running upload
    Submitting dist/quickpackage-1.1.tar.gz to https://pypi.python.org/pypi
    Server response (200): OK
    

    Now simply execute your script by running$ quickpackage (In this case)

    0 讨论(0)
  • 2020-11-29 10:56

    You want a shebang. #!/path/to/python. Put that on the first line of your python script. The #! is actually a magic number that tells the operating system to interpret the file as a script for the program named. You can supply /usr/bin/python or, to be more portable, /usr/bin/env python which calls the /usr/bin/env program and tells it you want the system's installed Python interpreter.

    You'll also have to put your script in your path, unless you're okay with typing ./SQLsap args.

    0 讨论(0)
  • 2020-11-29 10:56

    On Windows or DOS you can come close by putting your python code into a .BAT file like this.

    rem = ''' this line interpreted by BAT and PYTHON
    @REM BAT-ONLY code begins now inside PYTHON comment
    @echo off
    python "%~dpnx0" %*
    goto :eof
    @REM CMD-ONLY code ends
    '''
    
    import sys
    print sys.path
    

    Unfortunately, I can't get rid of the first line message on the output, but you could always change the text after ''' to be something like the application's name and people wouldn't notice.

    Ideally, you wouldn't put lots of Python code in the .BAT file but would import a .py file and then run its .__main__ method.

    0 讨论(0)
  • 2020-11-29 10:56

    In unix, you use a shebang line at the start of your script:

    #!/usr/bin/env python
    

    make the file executable:

    chmod +x arbitraryname
    

    and put it in a directory on your PATH (can be a symlink):

    cd ~/bin/
    ln -s ~/some/path/to/myscript/arbitraryname
    

    In windows, files like *.py has been set to be open with python.exe by default. (If not, you can set manually.) So you can run *.py files in console directly.

    Note that:

    In windows, text new line code is "\r\n", but in unix, it is "\n". If your python script is windows format, then executing in unix will report "No such file or directory" error. To repair this problem, just replace all "\r\n" with "\n" in unix will be ok.

    0 讨论(0)
  • 2020-11-29 10:57

    Assuming this is on a unix system, you can add a "shebang" on the top of the file like this:
    #!/usr/bin/env python

    And then set the executable flag like this:
    chmod +x SQLsap

    0 讨论(0)
  • 2020-11-29 11:05

    You can prepend a shebang on the first line of the script:

    #!/usr/bin/env python
    

    This will tell your current shell which command to feed the script into.

    0 讨论(0)
提交回复
热议问题