Превратите приложение или скрипт в команду оболочки

Когда я хочу запустить свои приложения на 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 если у вас есть правильная линия Шебанга).

  1. Добавьте строку shebang в начале вашего файла:

    #!/usr/bin/env python
    
  2. Сделайте ваш файл исполняемым, позвонив

    chmod +x app.py
    

    в оболочке.

  3. Переместите его в другое место, включенное в PATH переменная окружения и переименуйте его в app, Или добавьте путь к каталогу, содержащему app к PATH переменная окружения путем добавления строки

    export PATH=$PATH:/path/to/app
    

    на ваш .bash_profile,

  1. Добавьте shebang: в качестве верхней строки файла: #!/usr/bin/python или же #!/usr/bin/python3 (вы можете использовать python -B предотвратить генерацию .pyc файлы, поэтому я не использую /usr/bin/env)

  2. Сделайте его исполняемым: вам нужно будет сделать chmod +x app.py

  3. (необязательно) Добавьте каталог в путь, поэтому можете вызывать его где угодно: добавьте каталог со своим исполняемым файлом в ваш $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 вашей системы.

Другие вопросы по тегам