Здесь я планирую размещать небольшие статьи на интересующие меня темы.
воскресенье, 8 сентября 2013 г.
Запуск Python программы открепленной от консоли
Иногда бывает так, что нужно что бы программа выполнялась в фоне т.е. не была бы привязана к тому месту откуда была вызвана, например при написании демонов на UNIX системах и сервисоподобного ПО в Windows системах. Вопросы создания процесса и его поведения достаточно отличаются в этих ОС. В случае с UNIX достаточно такого распространенного приема как «Magic double fork».
В случае с Windows ОС дело обстоит сложнее, одним из вариантов является превратить процесс в службу (service) Windows, для этого можно воспользоваться библиотекой pywin32, которая за вас реализует цепочку вызовов Windows API. Однако это библиотека достаточно тяжела и избыточна функционалом, если необходимо решить только заданную задачу. Суть варианта, рассматриваемого далее, состоит в том что на этапе инициализации (т.е. до запуска основного кода) происходит запуск дочерней идентичной программы и выходу из родительской. Таким образом дочерняя программа продолжает выполнение не имея стандартных потоков ввода/вывода.
Как запускать программы на Python файлы .py в Windows 10
Примечание для Windows: Для корректной работы кода Python интерпретатор должен быть прописан в переменной окружения PATH, что бы его можно было вызвать из командной строки Windows
#!/usr/bin/python
# -*- coding: utf-8 -*-
import optparse, os, sys, platform, subprocess
class Main(object):
def __init__(self):
# Парсер аргументов командной строки
parser=optparse.OptionParser( ‘Demo of cross-platform detouch console’ )
parser.add_option( ‘-v’ , ‘—verbose’ , action= ‘store_true’ , default=False, help= ‘Verbose ouput to stdout.’ )
parser.add_option( ‘-s’ , ‘—silence’ , action= ‘store_true’ , default=False, help= ‘Be silence, no any output to stdout and stderr’ )
# Опция ниже является «флагом» указывающим что произошел перезапуск программы открепленной от консоли.
parser.add_option( ‘—windows-daemon’ , action= ‘store_true’ , default=False, help=optparse.SUPPRESS_HELP)
# В случае если платформа ОС LINUX/UNIX то выполняем «magic double fork»
if platform.system()== ‘Linux’ :
# set daemon via magic double fork
try:
pid=os.fork()
if pid>0:
sys.exit(0)
except OSError, e:
print ‘fork #1 failed: <> <>’ .format(e.errno, e.strerror)
sys.exit(1)
# Do second fork
try:
pid=os.fork()
if pid>0:
print ‘Daemon PID <>’ .format(pid)
sys.exit(0)
except OSError, e:
print ‘fork #2 failed: <> <>’ .format(e.errno, e.strerror)
sys.exit(1)
else:
# Если аргумент командой строки не задан значит программа вызывается первый раз,
# следовательно, выполняем перезапуск указывая необходимый алгоритм.
if not self.options.windows_daemon:
p=subprocess.Popen([sys.executable or ‘python’ ]+sys.argv+[ ‘—windows-daemon’ ], shell=False, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
time.sleep(2)
if p.poll()!=None:
print p.stderr.read()
print p.stdout.read()
exit(1)
exit(0)
Источник: john16blog.blogspot.com
Как запустить программу питон через консоль?
Чтобы запустить «Пайтон» в интерактивном режиме, надо набрать в командной строке (cmd) имя интерпретатора — python (иногда это python3) либо запустить интегрированную среду разработки IDLE. Чтобы выполнить запуск в пакетном режиме, надо ввести в командной строке имя интерпретатора, плюс имя файла.
Как запустить Питон в консоле?
Для запуска интерактивной сессии нужно просто открыть терминал или командную строку и ввести python (или python3 в зависимости от версии). После нажатия Enter запустится интерактивный режим.
Как запустить код через консоль?
- В Windows нажать комбинацию клавиш «Флажок» + «R», после чего ввести команду cmd и нажать на кнопку «ОК» в диалоговом окне.
- В Linux или других подобных операционных системах доступ к командной строке предоставляется с помощью дополнительной программы.
Как установить питон через консоль?
- Откройте командную строку Windows, запустив cmd.exe.
- Введите pip и нажмите «Enter»
- Вы увидите справочный текст менеджера пакетов Python под названием “pip”.
Как открыть Python файл из командной строки?
Командная строка в верхней части меню «Пуск», чтобы открыть Командную строку. Перейдите к расположению файла Python. Введите cd и нажмите пробел, после чего введите адрес «Расположение» файла Python и нажмите ↵ Enter .
Как запустить код Python в Visual Studio?
- Установите Расширение прогона кода
- Откройте файл кода Python в текстовом редакторе, затем используйте ярлык Ctrl+Alt+N или нажмите F1 , а затем выберите/введите Run Code , код будет запущен, и вывод будет отображаться в окне вывода.
Как запустить код в PyCharm?
Насколько я знаю, PyCharm имеет 2 способа запуска скрипта в консоли: 1) Выберите кучу кода и нажмите Ctrl + Alt + E . 2) сохраните код в файле и импортируйте его из консоли.
Как открыть файл py?
- В Windows: Python, Microsoft Notepad, Notepad++, Sublime Text, codeEditor, Любой другой текстовый редактор
- В Mac OS: MacroMates TextMate, Любой другой текстовый редактор
- В Linux: GNU Emacs, gedit, Любой другой текстовый редактор
Как запустить программу в IDLE?
Для запуска IDLE в Windows необходимо перейти в папку Python в меню “Пуск” и найти там ярлык с именем “IDLE (Python 3.5 XX-bit)”. В результате IDLE будет установлен на ваш компьютер.
Как запустить код в Visual Studio?
- Для сборки проекта выберите в меню Сборка пункт Собрать решение. Окно Вывод отображает результаты процесса сборки.
- Чтобы запустить этот код, в строке меню выберите Отладка и Запуск без отладки. Открывается окно консоли, и запускается ваше приложение.
Как установить PIP на питон?
- Скачайте установочный скрипт get-pip.py. Если у вас Python 3.2, версия get-pip.py должны быть такой же. .
- Откройте командную строку и перейдите к каталогу с файлом get-pip.py.
- Запустите следующую команду: python get-pip.py.
Как установить Python и PyCharm?
- Скачивание и установка Python. .
- Запускаем скачанный .exe файл. .
- Дальше выбирайте верхний (простой) способ установки.
- Дальше начнется процесс установки:
- По окончанию установки закрывайте окно установщика. .
- Запускаем скачанный .exe файл. .
- Дальше надо указать место установки среды:
- Важный момент!
Как открыть файл с помощью командной строки?
Для этого найдите ту папку, в которой хранится исполняемый файл, и нажмите по ней правой кнопкой мыши, при этом зажав и удерживая клавишу «Shift». Дальше в контекстном меню выберите «Открыть окно команд». После этого в командной строке сразу откроется нужная нам папка.
Как войти в командную строку в Windows 10?
Нажмите правую кнопку мыши на кнопке Пуск (или сочетание клавиш WIN + X) и выберите пункт Командная строка (администратор) в открывшемся меню.
Как запустить python файл через консоль Ubuntu?
Если вы используете последний, щелкните правой кнопкой мыши и выберите «Open In Terminal». Когда терминал открывается, введите «sudo chmod + x Yourfilename». После ввода пароля введите «python./Yourfilename», который откроет ваш файл python в командной строке. Надеюсь, это поможет!
Источник: chelc.ru
Python: запустить функцию из командной строки
С -c (команда) аргумент (при условии, что ваш файл называется foo.py ):
$ python -c ‘import foo; print foo.hello()’
альтернативно, если вы не заботитесь о загрязнении пространства имен:
$ python -c ‘from foo import *; print hello()’
$ python -c ‘from foo import hello; print hello()’
автор: Frédéric Hamidi
просто поставить hello() где-то ниже функции и он будет выполняться, когда вы делаете python your_file.py
для более аккуратного решения вы можете использовать это:
if __name__ == ‘__main__’: hello()
таким образом, функция будет выполняться только при запуске файла, а не при импорте файла.
автор: Wolph
python -c ‘from myfile import hello; hello()’ здесь myfile необходимо заменить базовым именем вашего скрипта Python. (Напр., myfile.py становится myfile ).
однако, если hello() ваша «постоянная» основная точка входа в ваш скрипт Python, тогда обычный способ сделать это выглядит следующим образом:
def hello(): print «Hi :)» if __name__ == «__main__»: hello()
это позволяет выполнить скрипт, просто запустив python myfile.py или python -m myfile .
некоторые объяснения здесь: __name__ — специальная переменная Python, которая содержит имя модуля в настоящее время выполняется,за исключением когда модуль запускается из командной строки, в этом случае он становится «__main__» .
автор: Tamás
Я написал быстрый маленький скрипт Python, который вызывается из командной строки bash. Он принимает имя модуля, класса и метода, который вы хотите вызвать, и параметры, которые вы хотите передать. Я называю его Пирун и перестал .py расширение и сделал его исполняемым с chmod +x PyRun, так что я могу просто назвать его быстро, как следовать:
./PyRun PyTest.ClassName.Method1 Param1
сохраните это в файле под названием PyRun
#!/usr/bin/env python #make executable in bash chmod +x PyRun import sys import inspect import importlib import os if __name__ == «__main__»: cmd_folder = os.path.realpath(os.path.abspath(os.path.split(inspect.getfile( inspect.currentframe() ))[0])) if cmd_folder not in sys.path: sys.path.insert(0, cmd_folder) # get the second argument from the command line methodname = sys.argv[1] # split this into module, class and function name modulename, classname, funcname = methodname.split(«.») # get pointers to the objects based on the string names themodule = importlib.import_module(modulename) theclass = getattr(themodule, classname) thefunc = getattr(theclass, funcname) # pass all the parameters from the third until the end of # what the function needs Hello» ./PyRun PyTest.SomeClass.Second (Hello, World)
обратите внимание на последний пример экранирования скобок для передачи кортежа в качестве единственного параметра второму методу.
если вы передадите слишком мало параметров для того, что нужно методу, вы получите ошибку. Если вы проходите слишком много, он игнорирует дополнительные. Модуль должен быть в текущей рабочей папке, поставить PyRun можно в любом месте на вашем пути.
автор: Joseph Gagliardo
интересно, что если целью была печать на консоль командной строки или выполнение какой-либо другой минутной операции python, вы можете передать ввод в интерпретатор python следующим образом:
echo print(«hi:)») | python
а также трубные файлы..
python < foo.py
*обратите внимание, что расширение не должно быть.py для второго, чтобы работать. ** Также обратите внимание, что для bash вам может потребоваться избежать символов
echo print(«hi:)») | python
автор: Torie J
Если вы устанавливаете пакет runp с pip install runp не работает:
runp myfile.py hello
вы можете найти репозиторий по адресу:https://github.com/vascop/runp
автор: vascop
давайте сделаем это немного проще для себя и просто использовать модуль.
попробуй: pip install compago
тогда используйте так:
$ python test.py hello hi there! $ python test.py goodbye see ya later.
Примечание:ошибка в Python 3 на данный момент, но отлично работает с Python 2.
Edit: еще лучший вариант, на мой взгляд-это модуль пожар от Google, что позволяет легко также передавать аргументы функции. Это установлен с pip install fire . Из их GitHub:
вот простой пример.
import fire class Calculator(object): «»»A simple calculator class.»»» def double(self, number): return 2 * number if __name__ == ‘__main__’: fire.Fire(Calculator)
затем из командной строки, вы можете запустить:
python calculator.py double 10 # 20 python calculator.py double —number=15 # 30
автор: Charles Clayton
У меня было требование использовать различные утилиты python(range, string и т. д.) в командной строке и написал инструмент pyfunc специально для этого. Вы можете использовать его, чтобы обогатить опыт использования командной строки:
$ pyfunc -m range -a 1 7 2 1 3 5 $ pyfunc -m string.upper -a test TEST $ pyfunc -m string.replace -a ‘analyze what’ ‘what’ ‘this’ analyze this
автор: Saurabh Hirani
эта функция не может быть запущена из командной строки, так как она возвращает значение, которое не будет обработано. Вы можете удалить возврат и использовать print вместо
автор: Shubham
это всегда возможность ввести python в командной строке с помощью команды python
затем импортируйте файл так импорт example_file
затем выполнить команду example_file.hello ()
Это позволяет избежать странного .функция копирования pyc, которая появляется каждый раз при запуске python-c и т. д.
возможно, не так удобно, как одна команда, но хорошее быстрое исправление текста файла из командной строки и позволяет использовать python для вызова и выполнения файла.
автор: user2495144
что-то вроде этого: call_from_terminal.py
# call_from_terminal.py # Ex to run from terminal # ip='»hi»‘ # python -c «import call_from_terminal as cft; cft.test_term_fun($)» # or # fun_name=’call_from_terminal’ # python -c «import $ as cft; cft.test_term_fun($)» def test_term_fun(ip): print ip
это работает в bash.
$ ip='»hi»‘ ; fun_name=’call_from_terminal’ $ python -c «import $ as cft; cft.test_term_fun($)» hi
автор: Al Conrad
ниже Odd_Even_function.py файл с определением функции.
def OE(n): for a in range(n): if a % 2 == 0: print(a) else: print(a, «ODD»)
теперь, чтобы вызвать то же самое из командной строки ниже, параметры работали для меня.
опции 1 Полный путь к exepython.exe-c «импорт Odd_Even_function; Odd_Even_function.OE (100)»
2 Полный путь к exepython.exe-c «из Odd_Even_function импортировать OE; OE(100)»
Источник: askdev.ru