Страницы

Поиск по вопросам

суббота, 14 декабря 2019 г.

Как запускать файл Python из любого места в Ubuntu?

#python


Привет. Читаю книгу A Byte of Python. Там на 32й странице http://wombat.org.ua/AByteOfPython/AByteofPythonRussian-2.01.pdf
создается своя команда helloworld и с помощью нее можно вызывать файл helloworld.py
из любого места. К примеру просто py/helloworld.py у меня получается запускать, а вот
как сделать свою команду не пойму. Знаю есть alies, но в книге как-то иначе делается.
Кто подскажет как повторить пример? И чем отличается от alies?
    


Ответы

Ответ 1



Как запускать файл Python из любого места в Ubuntu? Также как и любую другую программу: файл должен быть в одной из директорий, указанной в $PATH $ echo $PATH файл должен быть исполняемым $ chmod +x путь/к/helloworld.py файл должен содержать корректную shebang строку на самом верху, например: #!/usr/bin/env python3 Если ~/bin директория находится в $PATH, то можно symlink создать: $ ln -s /полный/путь/к/helloworld.py ~/bin/helloworld После этого можно запускать helloworld из любой директории: $ helloworld В качестве альтернативы, чтобы автоматически создать исполняемый файл в пути из helloworld.py можно использовать setup.py файл: from setuptools import setup setup( name='helloworld', version='0.1', py_modules=['helloworld'], entry_points=''' [console_scripts] helloworld=helloworld:main ''', ) Код для запуска следует в main() функцию поместить. Чтобы инсталлировать скрипт (из директории с setup.py): $ python -m pip install . Если вы не используете virtualenv, тогда можно добавить --user опцию, чтобы локально для текущего пользователя поставить: $ python -m pip install . --user нужно добавить ~/.local/bin в путь ($PATH переменная окружения) в этом случае. После этого можно запускать helloworld из любой директории: $ helloworld А в чем отличие этого подхода от alies? Проще сказать что общее: alias (псевдоним) также как и другие подходы позволяет, набирая строку, например: helloworld, запустить желаемую команду. alias — это функциональность оболочки (такой как bash). Как symlink так и явная установка с помощью setup.py, приведённые в ответе, не требуют оболочку, чтобы потом запускать команду, например, можно из Питона запустить rc = subprocess.call('helloworld').

Ответ 2



$ chmod a+x helloworld.py После этого мы можем запускать программу напрямую, потому что наша операционная система запустит /usr/bin/env, который, в свою очередь, найдёт Python 3, а значит, сможет запустить наш файл. $ ./helloworld.py Привет, Мир!

Ответ 3



Вам необходимо добавить путь к каталогу с Вашим скриптом в переменную окружения PATH: PATH=$PATH:/path/to/your/dir

Комментариев нет:

Отправить комментарий