Модули python являются просто импортированными скриптами. Модули могут быть общедоступными (такими как time и subprocess) или собственными. В рамках данного материала рассмотрим как установить модуль python.
Импорт модуля в скрипте
Рассмотрим простейший скрипт на python, который будет использовать встроенный модуль time
mcedit modules.py
import time print ("Get some sleep") print(time.sleep(2)) print ("Wake up")
Первой строкой модуль импортируется, это означает, что функции, которые в нем заложены можно будет использовать в скрипте. В данном случае мы используем только одну из них — функцию sleep.
Таких модулей очень много, использовать их удобнее, чем реализовывать весь необходимый для работы приложения функционал с нуля.
Поскольку модуль является по сути просто скриптом, состоящим из некоторого количества функций, загруженным и использующимся оболочкой, создать модуль python можно самостоятельно.
В скрипте использован стандартный модуль time. Дополнительной установки требуют модули, которых нет в python изначально.
Как установить модуль python через pip
Модули устанавливаются через pip install (например, pip install Django) и потом также как стандартные модули импортируются в скрипте или в оболочке командной строки.
В случае если проект использует виртуальное окружение установку нужно выполнять предварительно активировав виртуальное окружение.
Как написать свой импортируемый скрипт
Напишем свой простейший модуль, затем импортируем его в оболочку
mcedit lesson.py
import subprocess
def main():
df = subprocess.call(['df', '-h'])
print (df)
def free():
free = subprocess.call(['free', '-m'])
print (free)
if __name__ == '__main__': main()
Обращаясь к скрипту в консоли сейчас получаем такой результат
python3 lesson.py
Filesystem Size Used Avail Use% Mounted on
udev 918M 0 918M 0% /dev
tmpfs 188M 6,3M 182M 4% /run
/dev/sda2 65G 16G 46G 25% /
/dev/sda3 393G 240G 134G 65% /home
cgmfs 100K 0 100K 0% /run/cgmanager/fs
По выводу можно судить о том, что отрабатывает функция main() из скрипта.
Теперь перейдем в оболочку python3 и импортируем модуль затем используем одну из написанных ранее функций (выводящую количество свободной оперативной памяти)
python3
Python 3.5.2 (default, Nov 23 2017, 16:37:01)
[GCC 5.4.0 20160609] on linux
Type «help», «copyright», «credits» or «license» for more information.
>>> import lesson
>>> lesson.free()
total used free shared buff/cache available
Mem: 1872 1247 133 136 491 261
Swap: 1905 584 1321
0
Таким же образом модуль можно использовать в других скриптах
mcedit try.py
import lesson
lesson.free()
Вывод при обращении к файлу будет аналогичным
python3 try.py
total used free shared buff/cache available
Mem: 1872 1254 118 140 499 250
Swap: 1905 583 1322
0
Модуль lesson сам является скриптом, чтобы он успешно импортировался у файла должно быть расширение .py, в имени же модуля расширение указывать не нужно.
В скриптах которые, используются как модули всегда прописывается конструкция if __name__ == '__main__'.