Вызов скрипта python из командной строки без предварительного ввода «python» - PullRequest
8 голосов
/ 04 августа 2010

Вопрос: Как мне вызвать скрипт Python в командной строке, не вводя python перед именем скрипта? Это вообще возможно?


Информация:

Я написал удобный скрипт для доступа к базам данных sqlite из командной строки, но мне не нравится вводить «python SQLsap args», а я бы предпочел просто «SQLsap args». Я не знаю, возможно ли это вообще, но было бы хорошо узнать, так ли это. Для больше, чем просто эта программа.

Ответы [ 6 ]

26 голосов
/ 04 августа 2010

Вы можете добавить шебанг в первой строке скрипта:

#!/usr/bin/env python

Это сообщит вашей текущей оболочке, в какую команду вводить скрипт.

4 голосов
/ 04 августа 2010

Ты хочешь шебанга.#!/path/to/python.Поместите это в первую строку вашего скрипта Python.#! на самом деле является магическим числом, которое указывает операционной системе интерпретировать файл как скрипт для названной программы.Вы можете указать /usr/bin/python или, для большей переносимости, /usr/bin/env python, который вызывает программу /usr/bin/env и сообщает, что вам нужен установленный в системе интерпретатор Python.ваш путь, если вы не в порядке с ./SQLsap args.

3 голосов
/ 04 августа 2010

Предполагая, что это в системе Unix, вы можете добавить "shebang" вверху файла, например: #!/usr/bin/env python

А затем установите исполняемый флаг следующим образом:
chmod +x SQLsap

2 голосов
/ 04 августа 2010

В Windows или DOS вы можете приблизиться, поместив свой код Python в файл .BAT, как этот.

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

К сожалению, я не могу избавиться от сообщения первой строки в выводе, но вы всегда можете изменить текст после '' 'на что-то вроде имени приложения, и люди не заметят.

В идеале вы бы не помещали много кода Python в файл .BAT, но импортировали бы файл .py и затем запускали бы его метод .__main__.

1 голос
/ 05 октября 2015

Другим способом сделать это было бы упаковать ваш скрипт на python.

Тогда все, что вам нужно сделать, это запустить $ pip install package-name и просто запустить $ package-name из любого каталога, чтобы запустить скрипт Python.

Я бы порекомендовал этот метод, поскольку он позволяет вам быстроподелиться / установить / использовать / удалить ваш скрипт Python.

Я написал простой скрипт QuickPackage , который может мгновенно создать и загрузить пакет Python для вашего удивительного скрипта, просто введя путь к вашему скрипту Python.

Пример :

$ pip install quickpackage

Использование :

Использование Просто запустите quickpackage и введите путь к скрипту Python.

Пример:

❯ 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

Теперь просто запустите ваш скрипт, выполнив $ quickpackage (В данном случае)

0 голосов
/ 28 сентября 2014

В Unix вы используете строку shebang в начале вашего скрипта:

#!/usr/bin/env python

сделать файл исполняемым:

chmod +x arbitraryname

и поместите его в каталог в вашей переменной PATH (может быть символической ссылкой):

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

В Windows файлы, подобные * .py, по умолчанию открыты с помощью python.exe. (Если нет, вы можете установить вручную.) Таким образом, вы можете запускать * .py файлы в консоли напрямую.

Обратите внимание:

В Windows текстовый код новой строки - "\ r \ n", но в unix - "\ n". Если ваш скрипт Python имеет формат Windows, то выполнение в Unix выдаст сообщение об ошибке «Нет такого файла или каталога». Чтобы исправить эту проблему, просто замените все "\ r \ n" на "\ n" в Unix, все будет в порядке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...