Превратите приложение или скрипт в команду оболочки
Когда я хочу запустить свои приложения на Python из командной строки (под Ubuntu), я должен быть в каталоге, где находится исходный код app.py, и запустить приложение с командой
python app.py
Как я могу сделать это (как это обычно делается), чтобы запустить приложение из произвольного каталога с помощью команды: app
? Точно так же, как вы печатаете ls
, mkdir
и другие команды?
благодарю вас
6 ответов
Добавьте каталог, в котором находится скрипт, к своему пути, сделайте его исполняемым и добавьте правильную строку shebang.
В вашем .bashrc
:
PATH=$PATH:/dir/to/the/script
Исполняемые:
chmod +x myscript.py
В верхней части сценария добавьте строку shebang:
#!/usr/bin/env python
Тогда из любого места вы можете просто сделать:
myscript.py
(Обратите внимание, что вам не нужен суффикс.py, он может называться как угодно, например, app
если у вас есть правильная линия Шебанга).
Добавьте строку shebang в начале вашего файла:
#!/usr/bin/env python
Сделайте ваш файл исполняемым, позвонив
chmod +x app.py
в оболочке.
Переместите его в другое место, включенное в
PATH
переменная окружения и переименуйте его вapp
, Или добавьте путь к каталогу, содержащемуapp
кPATH
переменная окружения путем добавления строкиexport PATH=$PATH:/path/to/app
на ваш
.bash_profile
,
Добавьте shebang: в качестве верхней строки файла:
#!/usr/bin/python
или же#!/usr/bin/python3
(вы можете использоватьpython -B
предотвратить генерацию.pyc
файлы, поэтому я не использую/usr/bin/env
)Сделайте его исполняемым: вам нужно будет сделать
chmod +x app.py
(необязательно) Добавьте каталог в путь, поэтому можете вызывать его где угодно: добавьте каталог со своим исполняемым файлом в ваш
$PATH
переменная окружения. То, как вы это сделаете, зависит от вашей оболочки, но либоexport PATH=$PATH:/home/you/some/path/to/myscripts
(например, дистрибутивы Linux, использующие bash) илиsetenv PATH $PATH:/home/you/some/path/to/myscripts
(например, tcsh, как в Mac OS X). Вы захотите поместить это, например, в свой.bashrc
или какой-либо сценарий запуска, который у вас есть, или вам придется повторять этот шаг каждый раз, когда вы входите в систему.
app.py
нужно будет быть в myscripts
(или как вы это называете) папка. Вам даже не нужно называть это app.py
, но вы можете просто переименовать его app
,
Если вы хотите пропустить шаг № 3, вы все равно можете сделать ./app
запустить его, если вы находитесь в том же каталоге.
Решение, несколько отличающееся от упомянутых здесь: Используйте псевдоним.
alias app='python /path/to/app.py'
Добавьте вышеуказанную строку к вашему ~/.bashrc
или же ~/.bash_login
файл (или предпочтительно ~/.bash_aliases
если вы на Ubuntu). Тогда вы можете просто использовать свой скрипт в качестве инструмента командной строки с app
,
Нет необходимости добавлять шебанг (тем самым изменяя существующий скрипт Python), нет необходимости делать сценарий исполняемым и не нужно менять свой PATH
,
Вероятно, вы хотите использовать символическую ссылку на местоположение вашего файла вместо добавления другого пути к пути
chmod +x app.py
ln ~app.py /opt/local/bin/app
... предполагая, что /opt/local/bin уже находится на вашем пути,.
Также не забудьте добавить строку shebang в первую строку вашего скрипта:#!/usr/bin/env python
Я уверен, что вы должны сделать скрипт исполняемым через chmod +x
и поместите его в переменную PATH вашей системы.