Как запустить одну программу из другой python

Язык программирования Python имеет много встроенных функций. Однако их не хватает для решения всех видов задач, поэтому программисты добавляют инструменты, подключая модули.

Что такое модуль

Это отдельный файл, содержащий какой-то код. Любой скрипт, написанный программистом на Python 3, можно назвать модулем. Он может быть как исполняемым, так и подключаемым. Исполняемый модуль содержит код, который самостоятельно выполняет какие-то действия, а подключаемый представляет из себя набор функций, классов и объектов, которые можно использовать для решения задач в другой программе.

Разделение программ на модули даёт ряд преимуществ:

  • Программа имеет понятную структуру, что позволяет программисту легко ориентироваться в тысячах строк кода.
  • Позволяют использовать одни и те же имена для функций, то есть не допускают пересечений имён.
  • Программисту не нужно загружать скрипт большим количеством функций, большая часть которых не используется, достаточно подключить только нужные модули или их части.

Исполняемый и подключаемый модуль

Можно написать такой скрипт, который будет и выполнять какие-то действия (программа), и импортироваться в другие модули (библиотека).

Как запустить Python программу одной кнопкой?

Его важно правильно оформить:

  1. Весь исполняемый код помещается в функцию main() .
  2. Функция main() вызывается после условия:

if __name__ == ‘__main__’: main()

В этом случае интерпретатор Python не будет запускать код, вложенный в условие, но все функции библиотеки можно будет использовать.

Подключение модуля

Это можно сделать разными способами, выбор зависит только от нужд и желаний программиста.

Модули в Python — это файлы с расширением «.py». При импорте расширение опускается, интерпретатор и так знает, что после команды import следует имя модуля.

Программист может без проблем подключить любой модуль, который есть в стандартной библиотеке Python 3. Для подключения специфичных пользовательских инструментов сначала нужно их скачать. Обычно для этого используется пакетный менеджер pip.

Обычное подключение — import

Подключать модули желательно в самом вверху скрипта, используя ключевое слово «import», например import random .

Читайте также:
В какой программе лучше всего создавать базу данных

После подключения программа получает доступ ко всем функциям, методам и классам, содержащимся в нём.

Программист может вызвать любую функцию из подключенной библиотеки используя префикс « имя_модуля. «. Пример: random.randint(1,15) где random — это библиотека, которую мы подключили, а randint — имя функции, которая в ней описана.

Этот способ не допускает пересечения имён, то есть программист может использовать одно и то же имя функции в скрипте, точно такое же, как и в подключаемой библиотеке и не бояться, что после её подключения, функция будет переопределена.

Вот полный пример использования инструкции import в Python 3:

import random a = random.randint(1, 15) print(a)

Использование псевдонимов — as

Некоторые модули имеют длинное и неудобное название. Для удобства и сокращения количества кода программист может заменить его на своё.

Как запустить 2 цикла одновременно или же Многопоточность в Python | #Python #Программирование #Гайд

Например, если написать « import random as rand «, то вместо длинного random для обращения к функциям библиотеки можно будет использовать короткое rand .

Импорт компонентов — from

Чтобы не захламлять программу большим количеством неиспользуемых инструментов, можно подключать не весь модуль, а какую-то его часть.

Например, программист хочет использовать только одну функцию из математической библиотеки math . Если он подключит всю библиотеку, то в скрипт добавится более 40 функций, которые будут занимать место. Чтобы добавить в проект какую-то часть, используют ключевое слово from :

from import

Таким образом, основной скрипт получает доступ только к определённой функции. Кроме того, при таком подключении при вызове функций из подключённого модуля не используется префикс. Важно не забывать об этом, чтобы не допустить конфликта имён.

Можно подключить несколько функций сразу в одной строке. Для этого их надо перечислить через запятую.

Если после import написать символ звёздочки «*», подключится все содержимое модуля. Это считается плохим тоном, потому что может привести к совпадению имён из основного скрипта с именами из подключаемого. Но если программист уверен, что использовал уникальные названия для функций и переменных, теоретически он может использовать этот способ.

Перезагрузка библиотеки

За один сеанс модуль можно импортировать только один раз. Если программист после импорта, изменит в файле, который импортировал что-либо, а потом снова его импортирует, основная программа не будет видеть этих изменений.

Читайте также:
Как рассчитать кухонный гарнитур самостоятельно в программе

Всё потому, что при импорте библиотека кешируется, когда её пытаются импортировать снова, интерпретатор Python просто использует сохранённую в кэше копию.

import my_name, time print(my_name.name) # Выведет Сергей time.sleep(10) # пауза во время которой изменяем # значение name в файле my_name.py # с Сергей на Александр import my_name print(my_name.name) # Выведет Сергей

Если всё же необходимо перезагрузить модуль, на помощью приходит функция reload() из стандартной библиотеки importlib. Перезагрузка не влияет на объекты, ссылающиеся на импортированный модуль, и позволяет реализовать динамическую перезагрузку компонентов программы.

from importlib import reload import my_name, time print(my_name.name) # Выведет Сергей time.sleep(10)# меняем значение с Сергей на Александр my_name = reload(my_name) print(my_name.name) # Выведет Александр

Подключение из другой папки

Библиотеки подключаются очень просто, когда интерпретатор Python знает, где их искать. Python ищет модули:

  • В папке исполняемого скрипта.
  • Во встроенных модулях (built-in).
  • В директориях, определённых в sys.path (также содержит переменную PYTHONPATH).

Чтобы импортировать модуль из другой папки в Python 3, можно сделать следующее:

    Добавить путь к папке с модулем с помощью команды библиотеки sys —

import sys path.insert(0, «/путь/папка_модуля») import модуль

Для того чтобы директория, содержащая файлы, определялась как пакет, в неё необходимо добавить файл __init__.py. Он показывает интерпретатору Python, что папка — это пакет с модулями.

Начиная с версии Python 3.3, добавлять файл __init__.py в директорию больше не нужно, интерпретатор Python считает все папки пакетами.

Не стоит путать понятия «пакет» и «модуль». Модуль — это отдельный файл, а пакет — это папка, в которой содержится несколько отдельных скриптов.

Источник: all-python.ru

Как я могу заставить один файл python запускать другой? [Дубликат]

Как я могу сделать один файл python для запуска другого? Например, у меня есть два файла .py. Я хочу, чтобы один файл запускался, а затем запустил другой .py файл.

Nathan Tornquist 02 нояб. 2011, в 02:47
Поделиться
Ignacio Vazquez-Abrams 02 нояб. 2011, в 01:30
Также execfile() но модули обычно лучше.
ephemient 02 нояб.

2011, в 01:49
Поделиться:

8 ответов

Лучший ответ

Существует несколько способов. Я перечислил их в порядке инвертированного предпочтения (то есть, во-первых, лучше всего в последнем):

  • Рассматривайте его как модуль: import file . Это хорошо, потому что оно безопасно, быстро и обслуживается. Код используется повторно, поскольку это должно быть сделано. Большинство библиотек Python запускаются с использованием нескольких методов, растянутых по множеству файлов. Настоятельно рекомендуется. Обратите внимание, что если ваш файл называется file.py , ваш import не должен включать расширение .py в конце.
  • Беспокойная (и небезопасная) команда exec: execfile(‘file.py’) . Небезопасный, хакерский, обычно неправильный ответ. Избегайте, где это возможно.
  • Вызвать процесс оболочки: os.system(‘python file.py’) . Используйте при отчаянии.
Читайте также:
Детская программа что где когда

apc 02 нояб. 2011, в 03:43
Поделиться

просто добавим немного подробностей к случаю № 1 : скажем, вы хотите импортировать fileB.py в fileA.py. при условии, что файлы находятся в одном каталоге, внутри файла A вы бы import fileB затем, внутри файла A, вы можете вызывать любую функцию внутри файла B следующим образом: fileB.name_of_your_func() . конечно, есть больше вариантов и деталей, но это поможет вам начать работу.

jon 06 май 2014, в 21:20
Используйте модуль subprocess вместо модуля os
Hannes Karppila 10 июнь 2015, в 16:19

Использование импорта добавляет пространство имен к функциям, например, function () становится filename.function (). Чтобы избежать этого, используйте «from name import *». Это также запустит тело кода. Запуск с os.system () не сохранит определенную функцию (как она была запущена в другом процессе). execfile — это exec () в Python 3, и он не работает.

Источник: overcoder.net

Как запустить один файл python из другого файла python?

Чтобы начать, я начинающий на питоне, поэтому я даже не уверен, что мой вопрос имеет смысл или даже возможен. У меня есть 2 файла python app.py и compare.py . compare.py принимает два аргумента (Пути файлов) для запуска. Так, например, когда я хочу запустить его, я делаю python compare.py./image1.jpg./image2.jpg . Теперь я получаю какой-то текст, напечатанный на терминале, такой как Comparison Done, The distance is 0.544 . Теперь я хочу запустить этот compare.py изнутри app.py и получить строку с любым параметром compare.py который обычно выводится на терминал. Так, например: result = function(‘compare.py./image1.jpg./image2.jpg’) и результат будет иметь нужную строку. Это возможно?

спросил(а) 2017-10-11T14:57:00+03:00 5 лет, 8 месяцев назад

Источник: progi.pro

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru